3

我需要对以下问题的支持,我有一个网站,我想通过 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 获取吗?

4

2 回答 2

2

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

PHP DOMDocument / XPath:获取 HTML 文本和被包围的标签

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

希望它有所帮助

于 2013-07-17T13:05:19.690 回答
0

DOM 文档很慢

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

我会这样做:

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

preg_match("!(.*?)!", $content, $matches);

以上将搜索然后将所有内容提取到第一个

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

于 2013-07-22T15:15:58.873 回答