Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP&;Xpath:获取所有第一级HTML标记(所有同级)_Php_Xml_Dom_Xpath_Domdocument - Fatal编程技术网

PHP&;Xpath:获取所有第一级HTML标记(所有同级)

PHP&;Xpath:获取所有第一级HTML标记(所有同级),php,xml,dom,xpath,domdocument,Php,Xml,Dom,Xpath,Domdocument,我的函数需要从一部分HTML代码中获取所有第一级HTML标记,这样我就可以处理每个标记 这是我的HTML文档,总结如下: <p>The breed was first...</p> <p>Semencic credits his...</p> <h1>Appearance</h1> <p>The breed's distinctive...</p> <p>It should be sym

我的函数需要从一部分HTML代码中获取所有第一级HTML标记,这样我就可以处理每个标记

这是我的HTML文档,总结如下:

<p>The breed was first...</p>
<p>Semencic credits his...</p>

<h1>Appearance</h1>
<p>The breed's distinctive...</p>
<p>It should be symmetrical...</p>

<figure id="attachment_6" style="width: 840px" class="wp-caption alignnone">
    <img class="size-large wp-image-6" src="...jpg" alt="boerboel appearance" width="840" height="746">
    <figcaption class="wp-caption-text">The dog appearance.</figcaption>
</figure>

<h1>Requirements</h1>
<p>Prospective owners....</p>
<p>These dogs....</p>

<h2>A Little Warning!</h2>
<p>If you are considering...</p>
<blockquote>
    <p>According to...</p>
    <p>Source: http://...</p>
</blockquote>
<p>Although more suitable...</p>
但现在,它是:

h1
p
h1
p
h2
p
blockquote
p
有几件事不对: -“数字”没有显示出来 -即使有几个同级,段落标记也会被单独列出 -未找到第一个p

$doc = new DOMDocument();
$doc->loadHTML( $this->post_content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );

$xpath = new DOMXpath( $doc );
$nodes = $xpath->query( "/*/*" );

foreach ( $nodes as $node ) {

    echo $node->nodeName;
    echo '<br>';

    $this->add_part(
        md5( $node->textContent ),
        $node->nodeName
    );
}
$doc=newDOMDocument();
$doc->loadHTML($this->post_content,LIBXML_HTML_noimpled,LIBXML_HTML_NODEFDTD);
$xpath=新的DOMXpath($doc);
$nodes=$xpath->query(“/*/*”);
foreach($node作为$node){
echo$node->nodeName;
回声“
”; $this->添加零件( md5($node->textContent), $node->nodeName ); }
对于记录:使用您精确的HTML示例,我获得以下结果:

p / h1 / p / p / figure / h1 / p / p / h2 / p / blockquote / p
而不是(根据您的问题):

所以,我不知道这个答案是否能在实际代码中解决您的问题


HTML有一些规则。您尝试在没有根元素的情况下处理代码。用类似于
的方式包装代码:


对于记录:使用您精确的HTML示例,我获得以下结果:

p / h1 / p / p / figure / h1 / p / p / h2 / p / blockquote / p
而不是(根据您的问题):

所以,我不知道这个答案是否能在实际代码中解决您的问题


HTML有一些规则。您尝试在没有根元素的情况下处理代码。用类似于
的方式包装代码:

DOM(libxml)将重新格式化输入,使其具有单个文档元素。如果删除解析器选项(
LIBXML\u HTML\u NOIMPLIED | LIBXML\u HTML\u NODEFDTD
),它将修复HTML并添加
HTML
body
元素。因此,如果希望元素节点位于
body
中,可以使用表达式
//body/*

$document = new DOMDocument();
$document->loadHtml($html);
$xpath = new DOMXpath($document);

foreach ($xpath->evaluate('//body/*') as $node) {
  var_dump($node->nodeName);
}
输出:

string(1) "p"
string(1) "p"
string(2) "h1"
string(1) "p"
string(1) "p"
string(6) "figure"
string(2) "h1"
string(1) "p"
string(1) "p"
string(2) "h2"
string(1) "p"
string(10) "blockquote"
string(1) "p"
DOM(libxml)将重新格式化输入,使其具有单个文档元素。如果删除解析器选项(
LIBXML\u HTML\u NOIMPLIED | LIBXML\u HTML\u NODEFDTD
),它将修复HTML并添加
HTML
body
元素。因此,如果希望元素节点位于
body
中,可以使用表达式
//body/*

$document = new DOMDocument();
$document->loadHtml($html);
$xpath = new DOMXpath($document);

foreach ($xpath->evaluate('//body/*') as $node) {
  var_dump($node->nodeName);
}
输出:

string(1) "p"
string(1) "p"
string(2) "h1"
string(1) "p"
string(1) "p"
string(6) "figure"
string(2) "h1"
string(1) "p"
string(1) "p"
string(2) "h2"
string(1) "p"
string(10) "blockquote"
string(1) "p"

我认为你必须发布真正的HTML代码。你的代码对我来说很有用,用标签包装你的HTML样本。我的HTML代码是真正的HTML代码,没有标签包装所有这些。我想你必须发布真正的HTML代码。您的代码适用于我,使用标签包装的HTML示例。我的HTML代码是真正的HTML代码,没有标签包装所有这些。如果此解决方案不起作用,请打印
->post\u content
并向我们显示结果(从页面源代码复制,而不是从呈现页面或检查器复制)?如果此解决方案不起作用,能否打印
->post_content
并向我们显示结果(从页面源复制,而不是从呈现页面或检查器复制)?
string(1) "p"
string(1) "p"
string(2) "h1"
string(1) "p"
string(1) "p"
string(6) "figure"
string(2) "h1"
string(1) "p"
string(1) "p"
string(2) "h2"
string(1) "p"
string(10) "blockquote"
string(1) "p"