Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 获取div';通过xpath访问HTML内容_Php_Xpath - Fatal编程技术网

Php 获取div';通过xpath访问HTML内容

Php 获取div';通过xpath访问HTML内容,php,xpath,Php,Xpath,我需要在以下问题上的支持,我有一个网站,我想通过xpath获得产品描述。下面是内容的html示例: <div id="description"> <span>some test</span> <img src="some src"> <p> some content etc. </p> </div> 但是当我用下面的行输出结果时: echo "<pre>".$result->ite

我需要在以下问题上的支持,我有一个网站,我想通过xpath获得产品描述。下面是内容的html示例:

<div id="description">
 <span>some test</span>
 <img src="some src">
 <p>
  some content etc.
 </p>
</div>
但是当我用下面的行输出结果时:

echo "<pre>".$result->item( 0 )->nodeValue."</pre>"; // there is always only one element
echo'.$result->item(0)->nodeValue.“;//总是只有一个元素
我得到的只是未格式化的:“一些测试一些内容等”,没有空格和其他标记。我知道这是因为xpath将所有其他标记都视为节点,但是


我想知道有没有办法将div的内容转换成HTML?

嘿,我不久前做了类似的事情,这篇文章帮助了我:

这是代码中的一点开销,我的意思是,如果您(像我一样)认为它可以通过一行不同的XPath查询或其他方式解决


希望对您有所帮助

DOM文档很慢

为什么不能用正则表达式来实现这一点

我会这样做:

//把一切放在同一条线上 $content=preg\u replace(“!\r\n!”,”,$content)

preg_match(“!(*?”,$content,$matches)

以上内容将搜索,然后在第一次搜索之前处理所有内容


基于上面的HTMl,这将起作用。但是如果您在HTML中有其他标记,则不能尝试使用var_dump($result->item(0)->ownerDocument->saveXML($result));你可能在寻找:嗯,我想没有比你展示的更简单的出路了。嗯。。。是的,过了一会儿我才想到这一点,你是对的——这是解决这个问题的更好方法——更容易、更快。
echo "<pre>".$result->item( 0 )->nodeValue."</pre>"; // there is always only one element