Попробуйте следующее:
Пример источника:
$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;
Код:
$dom = new DOMDocument;
$dom->loadXml($html);
$xp = new DOMXPath($dom);
echo $xp->evaluate('count(/body/p[3][contains(., "quick")])');
XPath переводит в count третий элемент p ниже элемента body, который содержит значение текстового узла "quick" . Это вернет 1 или 0, если искомый термин существует где-либо в пределах значения узла.
Если вам нужно знать, начинается ли значение узла с определенной фразы, используйте вместо нее начинается с функции .
Расширение PHP DOM поддерживает XPath 1.0.
Вы также можете сделать это без XPath через обычный API:
$dom = new DOMDocument;
$dom->loadXml($html);
$thirdPara = $dom->getElementsByTagName('p')->item(2);
echo strpos($thirdPara->nodeValue, 'the quick') === 0 ? 1 : 0;
Метод getElementsByTagName
находит, кто бы мог подумать, все элементы по имени тега. Вызов item
возвращает третий из этих элементов (начиная с нуля). Функция strpos
находит позицию первого вхождения строки. Результат приведенного выше фрагмента снова будет равен 1 (или 0, если значение узла не начинается с «быстрого».