2014-01-24 151 views
-1

我使用simplehtmldom_1_5從網站解析html,當我將解析的文本回顯到正確打印的屏幕,但是當我嘗試使用file_put_contents將其保存到文件時,我的字符串已編碼爲html十進制代碼:html十進制編碼字符串

&#40 &#98 &#46 &#32 &#97 &#110 &#100 &#101 &#114 &#115 &#115 &#111 &#110 &#44 &#32

我已經嘗試過所有可能的utf8_encode,utf8_decode,htmlentities的組合......但沒有任何工作,同樣的問題,當我嘗試插入到MySQL表。 解析文本的mb_detect_encoding返回ASCII。 有什麼建議嗎?

header('Content-Type: text/html; charset=utf-8'); 
ini_set('max_execution_time', 0); 

include 'simplehtmldom_1_5/simple_html_dom.php'; 
$html = file_get_html($curr_url); 
$texts = $html->find('div[id=content_h]'); 
foreach($texts as $text) { 
    file_put_contents('queries.txt', $text->innertext . "\n", FILE_APPEND); 
} 
+0

我已經添加了一些代碼,但它是一個簡單的HTML使用簡單的HTML DOM – MaK

回答

1

你也試過html_entity_decode(http://de1.php.net/html_entity_decode)嗎? 那是功能轉換實體回

我只是測試這個以驗證它的工作明確類型的文本

*編輯。

是它的工作原理,但:

你的數據是不正確! 每一個實體都在其末尾丟失了一個分號!

這就是爲什麼解碼只適用於鬆散的瀏覽器渲染引擎...

你的數據應這樣看:

(b. 

,而不是像這樣

&#40&#98&#46 

見區別?

+0

是已經嘗試過html_entity_decode – MaK

+0

查看更新/編輯:) – serjoscha

+1

我已經試過這解析 preg_replace('/&#(\ d +)/ me',「chr(\\ 1)」,$ text) 它對我很有用 – MaK

1

最後這個工作對我來說

preg_replace('/&#(\d+)/me',"chr(\\1)", $text) 
相關問題