2012-03-24 126 views
0

我使用PHP简单的HTML DOM解析器从网页获取文本。 我需要处理的页面是一样的东西:使用PHP获取文本简单的HTML DOM解析器

<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标签...

+0

为什么你想让'plaintext'成员返回其他东西? – hakre 2012-03-24 18:14:35

+0

我只需要'你好,世界!'部分,有可能吗? – 2012-03-24 18:26:33

+0

我想是这样,但我不推荐简单的HTML DOM解析器,而只是['DOMDocument'](http://php.net/DOMDocument)。那将是' - > nodeValue'。 – hakre 2012-03-24 18:51:57

回答

0

看起来$text->find('text',2);让你在找什么,但是也可以它返回我我不确定在文本节点的数量未知的情况下它能够有多好。我会继续寻找。

+0

它不起作用,页面上什么也没有打印...... – 2012-03-25 09:36:28

0

可以使用strip_tags

<?php 
strip_tags($input, '<br>'); 
?> 
+0

为什么要排除'
'标签? OP说,所有标签都需要剥离。 – NonCreature0714 2016-12-14 04:01:04

+0

你可以留下那个空白。 – Peachy 2016-12-14 06:26:50

0

使用带标签简单地剥离html标签,如@Peachy指出。但是,传递第二个参数<br>意味着字符串将忽略<br>标记,这是不必要的。在你的情况,

<?php 
    strip_tags($text); 
?> 

会的工作,只要你愿意,因为你只选择在content ID的内容。

相关问题