【问题标题】:Get entire HTML, not just text with Goutte使用 Goutte 获取整个 HTML,而不仅仅是文本
【发布时间】:2016-02-06 17:10:44
【问题描述】:
我正在解析一个网站,但我遇到了一个问题,因为它有一些文本与 <br> 分开,但是当我使用 $node->text() 时,甚至没有空格代替 <br>。
我该如何获得<br> 或者至少用空格替换它?
HTML 是这样的:
<span>Some<br>Text</span>
目前我得到SomeText,我希望它是Some Text;
谢谢!
【问题讨论】:
标签:
php
html
laravel
guzzle
goutte
【解决方案1】:
使用 Goutte,您可以使用 html() 方法。
$node->html();
不过,它将包括<br/>。然后,您可以使用 strip_tags 删除 html 标记。
$text = strip_tags($node->html());
Goutte 可能有一种内置的方法。
【解决方案2】:
您可以检索该节点的 HTML 而不是文本,并自己用空格替换 <br> 标记。这样的事情应该就可以了:
str_replace('<br>', ' ', strip_tags($node->html(), '<br>'));
strip_tags 用于删除不是<br> 的任何内容,因此它等效于text() 方法,但允许换行标记。然后可以使用str_replace 将它们替换为空格。以上将改变这一点:
<span>Some<br>Text</span>
进入这个
Some Text