我需要使用php从span标签中获取多个值,例如:
<div>
<span class='name'>name value</span>
<span class='city'>city name</span>
<span class='street'>street name</span>
<span class='phone'>+17240000000</span>
</div>
<div>
<span class='name'>name value 2</span>
<span class='city'>city name 2</span>
<span class='street'>street name 2</span>
<span class='phone'>+17240000000 2</span>
</div>
我必须使用span类获取跨度值,我尝试使用此代码来获取值,并且它仅适用于1个值,例如“name”:
<?
$html = "<div>
<span class='name'>name value</span>
<span class='city'>city name</span>
<span class='street'>street name</span>
<span class='phone'>+17240000000</span>
</div>
<div>
<span class='name'>name value 2</span>
<span class='city'>city name 2</span>
<span class='street'>street name 2</span>
<span class='phone'>+17240000000 2</span>
</div>";
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom_xpath = new DOMXPath($dom);
$entries = $dom_xpath->evaluate("//span[@class='name']");
foreach ($entries as $entry) {
echo $entry->nodeValue."<br />";
}
?>
是否有人帮我修饰代码,以便我可以获得所有值
由于
答案 0 :(得分:2)
尝试更改
......
$dom = new DOMDocument();
@$dom->loadHTML($html);
foreach($dom->getElementsByTagName('span') as $span){
echo $span->nodeValue . '<br>';
//echo $span->getAttribute('class');
}
基于上述格式,您可能想尝试这个(假设className永远不会改变并且始终存在)
......
$dom = new DOMDocument();
@$dom->loadHTML($html);
$result = array();
foreach ($dom->getElementsByTagName('div') as $div){
$temp = array();
foreach($div->getElementsByTagName('span') as $span){
$temp[$span->getAttribute('class')] = $span->nodeValue;
}
// db insert here
// You may want to do some error check before inserting the data by making sure the array key exist
// need to escape data (SQL_injection)
//mysql_query("INSERT INTO db (`name`,`city`,`street`,`phone`) VALUES('{$temp['name']}','{$temp['city']}','{$temp['street']}','{$temp['phone']}')");
$result[] = $temp;
}
print_r($result);
你需要在将它们插入db(sql注入)之前转义你的值,并且更有效地进行批量插入 - 在insert multiple rows via a php array into mysql和http://en.wikipedia.org/wiki/SQL_injection
了解详情或强>
$entries = $dom_xpath->evaluate("//span[@class='name']")
到
$entries = $dom_xpath->evaluate("//span")