以下查询仅搜索包含&#34;历史记录&#34;的<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";
}
但我不知道,因为它没有&#34;历史&#34;它不会打印内部的静态内容&#34;否则&#34;
代码html:
下面div中的包含页面的所有主要内容
<div id="mw-content-text" lang="pt" dir="ltr" class="mw-content-ltr">
我想找到的是&#34;历史&#34;
<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>
标记之间的有很多代码,因为可以看到上面的
答案 0 :(得分:1)
使用此XPath查询获取任何h2
元素,其中包含字符串&#34; History&#34;包含在其中的任何地方:
//h2/*[contains(text(), "History")]
然后,要检查结果是否为正,请计算结果。如果它高于0,则有结果:
$paragraph = $domxpath->query('//h2/*[contains(text(), "History")]');
if ($paragraph->length > 0) {
echo "Results!";
}
else {
echo "Not contained";
}