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

基于属性值的PHP XPath选择元素,php,parsing,xpath,domdocument,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.p

嘿,伙计们,我这里有个问题。我想在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的。我知道我可以遍历所有a标记,然后使用if语句查看q=h是否存在。然而,当有数百个链接时,这似乎不是很有效。谢谢

我个人会这么做的

<?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
}

?>

这不是一个万无一失的解决方案,但你可以做到。@sbat这正是我想要的!非常感谢你!