请尝试以下方法:
示例来源:
$html = <<< HTML
<body>
<p>the dead brown fox</p>
<p>the slow brown fox</p>
<p>the quick brown fox</p>
<p>the crawling brown fox</p>
</body>
HTML;
Run Code Online (Sandbox Code Playgroud)
码:
$dom = new DOMDocument;
$dom->loadXml($html);
$xp = new DOMXPath($dom);
echo $xp->evaluate('count(/body/p[3][contains(., "quick")])');
Run Code Online (Sandbox Code Playgroud)
XPath转换为计算包含文本节点值"quick" 的body元素下面的第3个p元素.如果搜索的术语存在于节点值中的任何位置,则返回1或0.
如果你需要知道,如果节点值开头特定的短语,使用开始,用函数来代替.
PHP的DOM扩展支持XPath 1.0.
您也可以通过常规API在没有XPath的情况下执行此操作:
$dom = new DOMDocument;
$dom->loadXml($html);
$thirdPara = $dom->getElementsByTagName('p')->item(2);
echo strpos($thirdPara->nodeValue, 'the quick') === 0 ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
该getElementsByTagName
方法通过标记名称找到谁会想到的所有元素.该item
调用返回这些元素中的第三个(从零开始).该strpos
函数查找第一次出现的字符串的位置.上面的代码段的结果将再次为1(如果节点值不以"快速"开头,则为0.