我想搜索一个html文件或文本,找到一个拥有"朋友"在它的链接。那是: zack is your friend
然后当它与锚点匹配时,它应该返回href属性和锚点(链接)。我试过谷歌搜索,但到目前为止,我无法理解domXpath,其他示例只搜索href属性。我需要代码才能实现这一目标。
答案 0 :(得分:0)
Xpath可以做到这一点。 xpath表达式可以包含节点的条件。因此,让我们开始选择文档中任何位置的所有元素:
//a
现在,在条件中使用node()
获取所有子节点(元素和文本),将它们转换为string()
,检查字符串contains()
是否为子串“朋友”
//a[contains(string(node()), "friend")]
迭代节点并从中读取数据。
$html = <<<'HTML'
<a href="foo.html">zack is your friend</a>
HTML;
$dom = new DOMDocument;
$dom->loadHtml($html);
$xpath = new DOMXpath($dom);
$nodes = $xpath->evaluate('//a[contains(string(node()), "friend")]');
foreach ($nodes as $node) {
var_dump(
array(
'href' => $node->getAttribute('href'),
'text' => $node->textContent
)
);
}