如何使用DOM和PHP从class =“sco”中提取所有DIV的内容

时间:2016-06-22 16:29:34

标签: php dom

我在php文件中有多个DIV内容:div class =“sco”。

以下代码效果很好,但它只从第一个DIV中提取内容。如何从所有DIV中提取内容?

提前谢谢。

$html = file_get_contents('http://www..../include/test.php');
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
$finder = new DomXPath($doc);
$node = $finder->query("//*[contains(@class, 'sco')]");
print_r($doc->saveHTML($node->item(0)));

2 个答案:

答案 0 :(得分:0)

只需遍历您的DOMNodeList对象:

<?php

$html = '
<div class="sco">a</div>
<div class="sco">b</div>
<div class="sco">c</div>
';

$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
$finder = new DomXPath($doc);
$node = $finder->query("//*[contains(@class, 'sco')]");

for($i=0;$i<$node->length;$i++)
{
    echo "<pre>";
    var_dump($node->item($i)->nodeValue);
    echo "</pre>";
}

输出:

string(1) "a"
string(1) "b"
string(1) "c"

答案 1 :(得分:0)

在最后一行,您只访问第一项(索引0):$node->item(0)

相反,循环$node并打印每个项目:

$node = $finder->query("//*[contains(@class, 'sco')]");
foreach($node as $item){
    print_r($doc->saveHTML($item));
}