Запрос ниже ищет только первый абзац после <h2>
тег, который содержит «История» на странице сайта
$paragraph = $domxpath->query('
//h2[*[
contains(text(), "History")
]
]
/following-sibling::p[
position() = 1
]'
);
Но я хотел бы как-то проверить, есть ли <h2>
тег, содержащий историю
foreach($paragraph as $node) {
$content= $node->nodeValue;
}
if(!isset($content)){
echo $content;
}else{
echo "static content";
}
таким образом, это не работает
Обновить
$html = file_get_contents( 'www.site.com' );
$document = new DOMDocument();
$document->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$domxpath = new DOMXPath($document);
$paragraph = $domxpath->query('
//h2[*[
contains(text(), "History")
]
]
/following-sibling::p[
position() = 1
]'
);
}
foreach($paragraph as $node) {
$content= $node->nodeValue;
}
if(!isset($content)){
echo $content;
}else{
echo "static content";
}
но я не знаю, потому что, когда у него нет «истории», он не печатает статический контент, который находится внутри «другого»
Код HTML:
внутри div ниже есть все основное содержание страницы
<div id="mw-content-text" lang="pt" dir="ltr" class="mw-content-ltr">
Я хотел бы найти, что имеет «История»
<h2><span id="Hist.C3.B3ria"></span><span class="mw-headline" id="History">History</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Adamantina&veaction=edit&section=1" class="mw-editsection-visualeditor" title="Editar secção: History">editar</a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Adamantina&action=edit&section=1" title="Editar secção: History">editar código-fonte</a><span class="mw-editsection-bracket">]</span></span></h2>
между открытием <h2>
тег закрытия </h2>
имеет много кода, как можно видеть выше
Используйте этот запрос XPath, чтобы получить любой h2
элементы со строкой «History», содержащиеся где-либо внутри:
//h2/*[contains(text(), "History")]
Затем, чтобы проверить, является ли результат положительным, посчитайте результаты. Если оно выше 0, есть результаты:
$paragraph = $domxpath->query('//h2/*[contains(text(), "History")]');
if ($paragraph->length > 0) {
echo "Results!";
}
else {
echo "Not contained";
}
Других решений пока нет …