解決PHP擷取中文字串問題

2021-06-05 12:50:11 字數 1207 閱讀 1853

php擷取字串如果是英文那很好辦,直接用substr就行了,一般不會出現亂碼.中文就有點麻煩了.

下面給出兩種解決辦法:

(一)直接使用multi-byte函式庫的mb_substr();函式就行了,例項**如下

<?

php

echo

mb_substr(

$str

,$start

,$length

,$encoding

); echo""

; ?>

這種方法簡單,快速,安全,漂亮,**...反正什麼好詞都可以形容它,但是,可惜我的godaddy主機不支援,所以得另尋出路

(二)自定義擷取中文字串函式,基本上就是仿照mb_substr寫個函式,直接呼叫罷了,以下為我找到的**,其實很簡單:

<?

php

function

substr_cn(

$string_input

,$start

,$length

) >=

161))

//是漢語

else

//是英文 }

$chr_index

=$start_index

; //

擷取 for($i

=0;$i

<

$len;$i

++)

); if

($asc

>=

161)

=chr

($asc

); $return_str

=chr

(ord

($str_input

));

$len+=1

; "color: #008000;">//

結束條件加1

$i++

; //

位置偏移量加1

$chr_index+=2

; continue

; }

else

=chr

($asc

); $chr_index+=1

; }

} return

trim

($return_str

); }

//end of substr_cn

?>

PHP擷取中文字串的問題

以下 試用於gb2312編碼,擷取中文字串是php中乙個頭疼的問題,解決方法是根據值是否大於等於128來判斷是否是雙位元組字元,以避免出現亂碼的情況。但中英文混合 特殊符號等問題總是存在,現在寫乙個比較全面的,僅供參考 程式說明 1.len 引數以中文字元為標準,1len等於2個英文本元,為了形式上...

PHP 擷取中文字串亂碼問題

function csubstr str,start 0,length,charset utf 8 suffix true xf0 xff x80 xbf re gb2312 x01 x7f xb0 xf7 xa0 xfe re gbk x01 x7f x81 xfe x40 xfe re big5...

PHP擷取中文字串的問題

以下 試用於gb2312編碼,擷取中文字串是php中乙個頭疼的問題,解決方法是根據值是否大於等於128來判斷是否是雙位元組字元,以避免出現亂碼的情況。但中英文混合 特殊符號等問題總是存在,現在寫乙個比較全面的,僅供參考 程式說明 1.len 引數以中文字元為標準,1len等於2個英文本元,為了形式上...