您好,登錄后才能下訂單哦!
本篇內容介紹了“php中substr()截取中文字符亂碼的問題怎么解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
首先要明確這么一個問題,之所以會出現IE6偶爾無法加載CSS的現象,是因為文件出現了亂碼,導致后面的加載CSS的link無法被IE6正確解析。因此就看到了一個純HTML頁面,沒有CSS,赤裸裸!明確了問題,剩下的問題就好解決了,就是防止亂碼,既然萬戈所提供的函數出現了亂碼,就重新去找了一個php函數來解決這個亂碼的問題。
substr()函數可以分割文字,但要分割的文字如果包括中文字符往往會遇到問題。
mb_substr()這個函數的用法與substr()相似,只是在最后要加入多一個參數,以設定字符串的編碼。
通過這里大幾就應該理解我改進萬戈方法的原因了~~
下面再介紹幾個更高級處理辦法
例1
代碼如下
function func_chgtitle($str,$len) { //$length我們允許字符串顯示的最大長度 $tmpstr = ""; $strlen = $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; }
例2
字符串編碼為UTF-8的,一個中文字符占三個字節:
public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串長度
$strlen = $start + $len; // 用$strlen存儲字符串的總長度,即從字符串的起始位置到字符串的總長度
代碼如下
for($i = $start; $i < $strlen;) { if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首個字節的ASCII序數 值大于0xa0,則表示漢字 $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符賦給變量$tmpstr,即等 于一個漢字 $i=$i+3; // 變量自加3 } else{ $tmpstr .= substr ( $str, $i, 1 ); // 如果不是漢字,則每次取出一位字符賦給 變量$tmpstr $i++; } } return $tmpstr; // 返回字符串 }
“php中substr()截取中文字符亂碼的問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。