DOMCrawler纯文本

时间:2015-08-10 19:39:15

标签: php html symfony xpath

我正在使用Symfony的DomCrawler从网站上获取信息 在其中一个页面中有一个文本,包括非html编码的属性,如下所示:

<a href="some-url.html">Lorem ipsum <<dolor sit>> amet </a>

当我尝试使用filterXPath方法从a标签抓取文本时,我得到Lorem ipsum <,因为我认为它的行为符合像破坏的html标记这样的符号而只是忽略它们。

此外,当我尝试使用$node->filterXPath('my-xpath/a')->html()时,我也会像以下示例一样破解html:

<a href="some-url.html">Lorem ipsum &gt;</a>

所以,我的问题是,是否有任何方法可以从节点中获取“普通”文本?

3 个答案:

答案 0 :(得分:1)

我认为您正在寻找的内容可以通过以下方式实现:

$node->filterXPath('my-xpath/a')->text();

您可以在Symfony DOM Crawler documentation site找到文档。

答案 1 :(得分:0)

在GitHub上讨论这个问题之后,似乎没有“修复”我的问题的解决方案。唯一的解决方法是修复损坏的html。

答案 2 :(得分:0)

  

所以,我的问题是,是否有任何方法可以从节点中获取“普通”文本?

是的,但您需要先修复HTML。顺便说一句,您不需要手动执行此操作,HTML tidy extension会自动完美地处理您的案例。

在抓取HTML之前,只需整理