使用domXpath搜索锚点

时间:2013-11-30 11:04:32

标签: php html dom

我想搜索一个html文件或文本,找到一个拥有"朋友"在它的链接。那是: zack is your friend

然后当它与锚点匹配时,它应该返回href属性和锚点(链接)。我试过谷歌搜索,但到目前为止,我无法理解domXpath,其他示例只搜索href属性。我需要代码才能实现这一目标。

1 个答案:

答案 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
    )
  );
}