2013-02-09 94 views
3

我正在使用substr方法來訪問字符串的前20個字符。它在正常情況下工作正常,但是在使用rtl語言(utf8)時,它給了我錯誤的結果(顯示了大約10個字符)。我搜索了網頁,但發現第n個有用的解決這個問題。這是我的代碼行:substr無法正常工作與utf8

substr($article['CBody'],0,20); 

在此先感謝。

回答

8

如果您與編碼爲UTF-8,你可能會失去 字符字符串時您嘗試獲取使用PHP SUBSTR 功能其中的一部分。發生這種情況是因爲在UTF-8字符中, 不限制爲一個字節,它們具有可變長度以匹配1到4個字節之間的Unicode字符 。

您可以使用mb_substr(),它的工作原理幾乎相同的方式爲SUBSTR但不同的是,你可以添加到指定的編碼類型的新參數,是否爲UTF-8或不同的編碼。

試試這個:

$str = mb_substr($article['CBody'], 0, 20, 'UTF-8'); 

echo utf8_decode($str); 

希望這有助於。

+1

哇,它爲我工作。我真的很感激,我正在尋找它約3個小時。再次感謝:) – 2013-02-09 06:55:10