$ domxpath-> запрос — проверить заголовок

Запрос ниже ищет только первый абзац после <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&amp;veaction=edit&amp;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&amp;action=edit&amp;section=1" title="Editar secção: History">editar código-fonte</a><span class="mw-editsection-bracket">]</span></span></h2>

между открытием <h2> тег закрытия </h2> имеет много кода, как можно видеть выше

1

Решение

Используйте этот запрос 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";
}

демонстрация

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector