1. 程式人生 > >php使用substr中文亂碼問題

php使用substr中文亂碼問題

php配置 字節 查看數據庫 根據 javase 推薦 substr() pla format

周天的時候對網站 https://www.javasec.cn 進行bug修復和功能更新,其中遇到一個比較有意思的小問題:

問題:

網站的置頂推薦中,有文本略縮。但是無論怎麽修改最後一個字符始終現實為亂碼。

因為前端使用模板解析,{content}...所以看不出來是什麽問題導致了,跟進發現看看是在哪裏

解決:

1.查看這個中文是否非utf-8,是不是這個文字亂碼

2.查看php配置數據庫編碼是否正確

3.查看數據庫編碼是否正確

4.查看{contnet}的生成來源

echo str_replace(array(‘{permalink}‘, ‘{title}‘,‘{content}‘),array
($val[‘permalink‘], $val[‘title‘],substr($val[‘text‘],0,250,"utf-8")),$defaults[‘xformat‘]);

找到這個conent的數據來源,因為substr()根據字節,中文的字節比較特殊,所以沒辦法保證截取正確的情況下,果斷放棄了這個函數。

echo str_replace(array(‘{permalink}‘, ‘{title}‘,‘{content}‘),array($val[‘permalink‘], $val[‘title‘],mb_substr($val[‘text‘],0,130,"utf-8")),$defaults
[‘xformat‘]);

解決。

php使用substr中文亂碼問題