Php $domxpath->;查询-检查标题

Php $domxpath->;查询-检查标题,php,dom,domparser,Php,Dom,Domparser,下面的查询仅搜索网站页面上包含“历史记录”的标记后的第一段 $paragraph = $domxpath->query(' //h2[*[ contains(text(), "History") ] ] /following-sibling::p[

下面的查询仅搜索网站页面上包含“历史记录”的
标记后的第一段

            $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 = 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">

我想找到有“历史”的

History[|]

在结束标记的开始标记之间有很多代码,正如上面可以看到的那样,使用此XPath查询可以获取任何包含字符串“History”的
h2
元素:

//h2/*[contains(text(), "History")]
然后,为了检查结果是否为阳性,计算结果。如果大于0,则会出现以下结果:

$paragraph = $domxpath->query('//h2/*[contains(text(), "History")]');
if ($paragraph->length > 0) {
    echo "Results!";
}
else {
    echo "Not contained";
}

这个问题很不清楚。请提供一个HTML示例,说明您所拥有的内容以及必须匹配的内容。感谢您的反馈,我将改进此问题。@ishegg我更新了我的问题,请查看是否清晰,但如果您发布您收到的HTML摘录以及您需要从中提取的内容,将更容易帮助您。@ishegg再次更新,请看谢谢,但我想你还没有理解我的意思。我想打印的内容只是一个段落。这一段只有在有“历史”的情况下才会被打印出来。不清楚你指的是哪一段。在您自己的xpath中,您也在做同样的事情,当存在包含“history”@Gislefok的
h2
时,xpath会选择下一个同级段落,想象一下,如果页面有历史记录,那么我有一个巨大的页面列表,如果页面没有历史记录,那么这是打印的。只有xpath过滤器没有compare@Gislef很高兴能帮忙。祝你好运
$paragraph = $domxpath->query('//h2/*[contains(text(), "History")]');
if ($paragraph->length > 0) {
    echo "Results!";
}
else {
    echo "Not contained";
}