获取带有特定文本 PHP / XPath 的 DOMElement

TMi*_*hel 3 php xpath dom

在 PHP 中,我想获取所有DOMElement包含给定文本的内容。

我得到DOMTextwhen $xpath->query("//text()[contains(., 'My String')]"),但是我必须执行哪个查询才能得到DOMElement?

Dim*_*hev 5

使用:

(//*[text()
      [contains(., 'My String')]
   ]
 )[1]
Run Code Online (Sandbox Code Playgroud)

这将选择 XML 文档中具有包含字符串的文本节点子节点的第一个元素"My String"。

如果保证只有一个这样的元素存在,上面的表达式可以简化为:

//*[text()
      [contains(., 'My String')]
   ]
Run Code Online (Sandbox Code Playgroud)

如果您要查找的元素保证只有一个文本节点子元素,则此表达式可以简化为:

(//*[contains(., 'My String')])[1]
Run Code Online (Sandbox Code Playgroud)

分别:

//*[contains(., 'My String')]
Run Code Online (Sandbox Code Playgroud)