PHP用XPath搜索

时间:2015-05-31 12:44:02

标签: php xpath

我有以下内容:

<div class="item">
<a href="ONE">
    <img src="TWO">
</a>
</div>

我想使用XPath从那里取出“ONE”和“TWO”。

我现在的代码是:

$html = file_get_contents($_POST['url']);
$document = new DOMDocument();
$document->loadHTML ($html);
$selector = new DOMXPath($document);
$query = '//div[@class="item"]';
$anchors = $selector->query($query);
foreach ($anchors as $node) {
    // print ONE;
    // print TWO;
}

1 个答案:

答案 0 :(得分:1)

这是一个例子:

$html = <<<EOF
<div class="item">
<a href="ONE">
  <img src="TWO">
</a>
</div>
EOF;

$doc = new DOMDocument();
$doc->loadHTML($html);
$selector = new DOMXPath($doc);

$links = $selector->query(
    '//div[@class="item"]//@href | //div[@class="item"]//@src'
);

foreach($links as $link) {
    echo $link->nodeValue . PHP_EOL;
}

如果您希望按<div class="item">细分,可以使用以下代码:

foreach($selector->query('//div[@class="item"]') as $div) {
    foreach($selector->query('.//@href | .//@src', $div) as $link) {
        echo $link->nodeValue . PHP_EOL;
    }
}