(以下修改請注意您必須有安裝 mbstring模組 安裝方法請點此處)
在PHPBB中以及各種PHPBB外掛模組很常使用到\r
strlen函數來計算字串的長度並使用substr函數來取部分的字串\r
但是在UTF-8編碼卻無法正確的切割字串,導致常常會有最後
一個文字被切成亂碼的情況
例如原本字串是(?#125; 其實是 開 不過這不是重點 重點請看字串最後一個字)
代碼: 選擇全部
[公告]意見反映版面不?#125;放訪客發表
代碼: 選擇全部
[公告]意見反映版面不?#125;放訪客發议.
這時候請改用\r
mb_strlen函數來代替 strlen函數\r
請參閱\r
http://www.php.net/manual/en/function.mb-strlen.php
請使用mb_substr函數來代替 substr函數\r
請參閱\r
http://www.php.net/manual/en/function.mb-substr.php
例如以下範例
(修改前)
代碼: 選擇全部
if (strlen($line['topic_title']) > 15)
{
$line_topic_title = substr($line['topic_title'], 0, 15)." ...";
}
代碼: 選擇全部
if (mb_strlen($line['topic_title'], 'utf-8') > 15)
{
$line_topic_title = mb_substr($line['topic_title'], 0, 15,'utf-8')." ...";
}