使用 PHP Simple HTML DOM Parser 获取文本
Posted
技术标签:
【中文标题】使用 PHP Simple HTML DOM Parser 获取文本【英文标题】:Get text with PHP Simple HTML DOM Parser 【发布时间】:2012-04-08 21:29:53 【问题描述】:我正在使用 php Simple html DOM Parser 从网页中获取文本。 我需要操作的页面是这样的:
<html>
<head>
<title>title</title>
<body>
<div id="content">
<h1>HELLO</h1>
Hello, world!
</div>
</body>
</html>
我需要获取h1
元素和没有标签的文本。
要获得h1
,我使用以下代码:
$html = file_get_html("remote_page.html");
foreach($html->find('#content') as $text)
echo "H1: ".$text->find('h1', 0)->plaintext;
但是其他文本呢? 我也在 foreach 中尝试了这个,但我得到了全文:
$text->plaintext;
但它也返回了H1
标签...
【问题讨论】:
为什么要让plaintext
成员返回其他内容?
我只需要“你好,世界!”部分,有可能吗?
我猜是这样,但我不能推荐 Simple HTML DOM Parser,而只推荐 DOMDocument
。那就是->nodeValue
。
我也遇到了同样的问题,我想在标签之外的标签后面提取文本...
【参考方案1】:
看起来$text->find('text',2);
得到了您正在寻找的东西,但是我不确定当文本节点的数量未知时它的效果如何。我会继续寻找。
【讨论】:
【参考方案2】:您可以使用 strip_tags
简单地去除 html 标签
<?php
strip_tags($input, '<br>');
?>
【讨论】:
为什么要排除<br>
标签? OP说所有标签都需要剥离。
你可以留空。【参考方案3】:
正如@Peachy 指出的那样,使用条形标签。但是,将第二个参数 <br>
传递给它意味着字符串将 忽略 <br>
标签,这是不必要的。在你的情况下,
<?php
strip_tags($text);
?>
如果您只选择content
id 中的内容,可以按您的意愿工作。
【讨论】:
【参考方案4】:试试看
echo "H1: ".$text->find('h1', 0)->innertext;
【讨论】:
以上是关于使用 PHP Simple HTML DOM Parser 获取文本的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 和 Simple HTML DOM 解析 HTML 时遇到问题
使用php simple html dom parser解析html标签
php simple_html_dom.php 去掉html标签