2012-03-24 94 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的內容。

相關問題