我希望得到每个字段的价值,如“德里”,“Kolkatta”。
我怎样才能使用php DOM Script?
这是要解析的页面的来源。
<tbody><tr>
<td>Delhi</td>
<td>66.91</td>
</tr>
<tr>
<td>Kolkata</td>
<td>69.52</td>
</tr>
<tr>
<td>Mumbai</td>
<td>78.44</td>
</tr>
<tr>
<td>Chennai</td>
<td>69.93</td>
</tr></tbody>
答案 0 :(得分:1)
这里我们使用DOMDocument
来实现所需的输出。
$domDocument = new DOMDocument();
$domDocument->loadHTML($string);
$domXPath = new DOMXPath($domDocument);
$results = $domXPath->query("//tbody/tr/td");
$data=array();
for($x=0;$x<$results->length;$x+=2)
{
$instance=$results->item($x);
if($instance instanceof DOMElement)
{
$data[]=$results->item($x)->textContent;
}
}
print_r($data);
答案 1 :(得分:0)
请在此处查看问题:How do you parse and process HTML/XML in PHP?
如何使用DOM扩展已在StackOverflow上广泛使用,因此如果您选择使用它,您可以确定您遇到的大多数问题都可以通过搜索/浏览Stack Overflow来解决
这是一个例子:
$html = <<<HTML
<tbody><tr>
<td>Delhi</td>
<td>66.91</td>
</tr>
<tr>
<td>Kolkata</td>
<td>69.52</td>
</tr>
<tr>
<td>Mumbai</td>
<td>78.44</td>
</tr>
<tr>
<td>Chennai</td>
<td>69.93</td>
</tr></tbody>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$elements = $dom->getElementsByTagName('tr');
$data = [];
foreach($elements as $node) {
$childElements = $node->getElementsByTagName('td');
$data[$childElements->item(0)->nodeValue] = $childElements->item(1)->nodeValue;
}
答案 2 :(得分:0)
或者您可以使用simplexml
功能,如果有错误的方法或错误的想法请有人纠正我
$xml='<tbody><tr>
<td>Delhi</td>
<td>66.91</td>
</tr>
<tr>
<td>Kolkata</td>
<td>69.52</td>
</tr>
<tr>
<td>Mumbai</td>
<td>78.44</td>
</tr>
<tr>
<td>Chennai</td>
<td>69.93</td>
</tr></tbody> ';
echo "<pre>";
$arr=simplexml_load_string($xml);
$arr_new=array();
$arr1=json_decode(json_encode((array)$arr), TRUE);
foreach($arr1 as $val){
foreach($val as $k=>$v){
$arr_new[$val[$k]['td'][0]]=$val[$k]['td'][1];
}
}
输出
Array
(
[Delhi] => 66.91
[Kolkata] => 69.52
[Mumbai] => 78.44
[Chennai] => 69.93
)