2011-04-15 83 views
0

當我取回從這個網站的meta描述標籤的報價:http://mashable.com/2011/04/14/google-computers-regret/meta描述編碼 - 返回問題引號標誌着PHP

字周圍的引號「遺憾」回報問號。

我使用下面的代碼,而$ str爲返回的元數據:

if(mb_detect_encoding($str, 'UTF-8, ISO-8859-1', true) != 'ISO-8859-1') $str = utf8_decode($str); 
$str = strtr($str, get_html_translation_table(HTML_ENTITIES)); 
$str = strip_tags(html_entity_decode(htmlspecialchars_decode($str, ENT_NOQUOTES), ENT_NOQUOTES, "UTF-8")); 
$str = html_entity_decode($str, ENT_QUOTES,"UTF-8"); 

我怎樣才能解決這個問題?

+0

你想完成什麼? – Gumbo 2011-04-15 06:59:38

回答

0

這是一個原始的修復,我相信有這樣做的更好的辦法,但:

$str = str_replace(array("「" , "」") , '"' , $str); 

這應該用一個簡單的引號替換這些程式化引號和防止問號問題。

(快樂地學習更好,更聰明,比這個笨重的一個解決方案。)根據下面的評論

修訂:

$str = str_replace(array("\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99") , '"' , $str); 

可以更換多種模式(在一個陣列舉行)與使用此函數的替換str相同 - 不必填充具有相同內容的數組,或者在不需要時創建笨重的函數。

+0

PHP正在將那些「風格化」的引號解釋爲我的常規引用,而不是進行替換 – John 2011-04-15 06:35:18

+0

我發現這些引號被稱爲「捲曲引號」,並且當然是由微軟創建的......這是一個替換函數他們:'函數fixcurly($ string){$ search = array(「\ xe2 \ x80 \ x9c」,「\ xe2 \ x80 \ x9d」,「\ xe2 \ x80 \ x98」,「\ xe2 \ x80 \ x99」 ); $ replace = array(''',''',''「,」'「); return str_replace($ search,$ replace,$ string); }' – John 2011-04-15 06:45:45

0

將生成的HTML輸出爲UTF-8。