2013-07-17 163 views
2

我需要对以下问题的支持,我有一个网站,我想通过xpath获取产品说明。下面内容的HTML范例:通过xpath获取div的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 

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

,但是当我用下面的行输出结果我得到的只是未格式化的:“一些测试内容等”没有空格和其他标记。我知道这是因为xpath把所有其他标签作为节点,但...

我有一种方法来获取div的内容为HTML?

+0

中有其他标签,你可以尝试var_dump($ result-> item(0) - > ownerDocument-> saveXML($ result)); – insanebits

+0

你可能在寻找:[PHP的DomDocument中的innerHTML?](http://stackoverflow.com/q/2087103/367456) – hakre

回答

2

嘿,我没有类似的东西了一段时间后和这个职位让我:

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

实在是有点在你的代码的开销,我的意思是,如果你想(像我一样),它可以解决在不同的XPath查询或东西一条线......

希望它帮助

+0

嗯,我想没有比你显示的简单的出路。 –

0

DOM文档SLOOOOOW

为什么你不能用正则表达式来做这件事?

我这样做:( “!\ r \ n”, “”,$内容)

//把一切都在同一行 $内容= preg_replace函数; preg_match(“!(。*?)!”,$ content,$ matches);

以上将搜索,然后需要的一切,直到基于HTML以上,这将工作的第

。但不是如果你在HTML

+0

嗯......是的,稍后我就会想起,你是对的 - 这是解决这个问题的更好方法 - 更简单,更快捷。 –