2013-07-25 58 views
0

我爲wordpress做了一個解析器,但由於wp和db使用的是utf-8,而且有些頁面使用不同的編碼,所以當我解析它們時,我得到了gibrish。 我使用curl從外部URL和一些匹配中獲取內容,並用正則表達式替換。用不同的編碼解析頁面

有什麼建議如何解決這個問題?

我使用了Joni的建議,它解決了我的問題。我用於以後查詢關於此問題的一些示例代碼:

preg_match("/charset=(.*?)(\n|'|\"|>)/ism", $content, $charset); 
$content = preg_replace('/^HTTP+[^<]+</', '<', $content); 
$charset = @trim($charset[1]); 
if (preg_match("~(windows-1251|1251)~i", $charset)) return 'Windows-1251'; 
elseif (preg_match("~iso-8859-7~i", $charset)) return 'ISO-8859-7'; 
elseif (preg_match("~(koi8|iso-ir-111)~i", $charset)) return 'KOI8-R'; 

回答

0

檢測從內容類型頭正確的編碼(或HTML meta標籤,如果頭部丟失),並使用它時,你解析文檔。

+0

我用你的建議,它工作得很好。我首先解析了標題,然後解析了內容。非常感謝! – Alexk