$ domxpath->查询 - 检查标题

时间:2018-03-04 19:42:20

标签: php dom domparser

以下查询仅搜索包含&#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&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 个答案:

答案 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";
}

Demo