通过xpath获取div的HTML内容

时间:2013-07-17 12:59:20

标签: php xpath

我需要对以下问题提供支持,我有一个网站,我想通过xpath获取产品说明。在内容的示例html下面:

<div id="description">
 <span>some test</span>
 <img src="some src">
 <p>
  some content etc.
 </p>
</div>

现在我使用以下代码:

$result = $xpath->query('//div[@id="description"]');

但是当我用以下行输出结果时:

echo "<pre>".$result->item( 0 )->nodeValue."</pre>"; // there is always only one element

我得到的只是未格式化:“一些测试内容等。”没有空格和其他标签。我知道这是因为xpath将所有其他标签视为节点但是......

我有办法将div的内容作为HTML吗?

2 个答案:

答案 0 :(得分:2)

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

PHP DOMDocument / XPath: Get HTML-text and surrounded tags

你的代码有点开销,我的意思是,如果你认为(像我一样)它可以用不同的XPath查询或其他东西在一行中解决......

希望有所帮助

答案 1 :(得分:0)

DOM文件是SLOOOOOW

为什么不能用正则表达式做到这一点?

我会这样做:

//将所有内容放在一行上 $ content = preg_replace(“!\ r \ n!”,“”,$ content);

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

以上将搜索,然后将所有内容直到第一个

基于上面的HTMl,这将起作用。但如果您在HTML中有其他标签

,则不会