PHP XPath选择基于属性值的元素

时间:2014-07-11 19:11:01

标签: php parsing xpath domdocument

嘿,大家好,我这里有问题。我想在PHP中使用XPath根据其属性中的内容选择一个元素。这就是我的意思。

<a href="/example.php?id=6&q=h">Link1</a>
<a href="/example.php?id=4&q=s">Link1</a>
<a href="/example.php?id=3&q=d">Link1</a>
<a href="/example.php?id=9&q=h">Link1</a>
<a href="/example.php?id=7&q=f">Link1</a>
<a href="/example.php?id=8&q=h">Link1</a>

所以,让我们假设这是一个包含100个链接的完整页面。我想只提取q = h的那些。我知道我可以遍历所有的标签然后使用if语句来查看q = h是否存在。但是,当有数百个链接时,这似乎不是很有效。感谢

1 个答案:

答案 0 :(得分:0)

我个人会这样做

<?php

$htmlC = '<a href="/example.php?id=6&q=h">Link1</a>
<a href="/example.php?id=4&q=s">Link1</a>
<a href="/example.php?id=3&q=d">Link1</a>
<a href="/example.php?id=9&q=h">Link1</a>
<a href="/example.php?id=7&q=f">Link1</a>
<a href="/example.php?id=8&q=h">Link1</a>';

$dom = new DOMDocument();
@$dom->loadHTML($htmlC);
$xpath = new DOMXpath($dom);

$query = $xpath->query("//a[contains(@href, 'q=h')]");

foreach($query as $link){
//do what you need
}

?>