如何在php自訂截取中文字串

迷茫
發布: 2023-03-06 22:42:02
原創
1373 人瀏覽過

php自訂截取中文字串-utf8版

UTF-8的編碼範圍(utf-8使用1-6個位元組編碼字符,實際上只使用了1-4位元組) :

1个字节:00——7F
2个字节:C080——DFBF
3个字符:E08080——EFBFBF
4个字符:F0808080——F7BFBFBF
登入後複製
$str = 'abcd我是中国人';

echo strlen($str), '
'; echo mstrlen($str), '
'; echo msubstr($str, 3, 9); /** * 统计utf8下字符串长度 */ function mstrlen($str) { $len = 0; $i = 0; $slen = strlen($str); while ($i < $slen) { $o = ord($str[$i]); if ($o < 127) { $i++; } elseif ($o < 224) { $i+=2; } else { $i+=3; } $len++; } return $len; } /** * 截取utf8编码下的字符串 */ function msubstr($str, $start, $length) { $len = mstrlen($str); if($start < 0) { $start += $len; if($start < 0) { $start = 0; } } $slen = strlen($str); $index = 0; for ($i = 0; $i<$start && $i<$slen; $i++) { $o = ord($str[$index]); if ($o < 127) { $index++; }elseif ($o < 224) { $index+=2; } else { $index +=3; } } $length+=$index; $newStr = ''; for ($i = $index; $i < $length && $i<$slen; $i++) { $o = ord($str[$i]); if ($o < 127) { $newStr .= $str[$i]; } elseif ($o < 224) { $newStr .= substr($str, $i, 2); $i+=1; $length++; } else { $newStr .= substr($str, $i, 3); $i+=2; $length+=2; } } return $newStr; }
登入後複製

以上是如何在php自訂截取中文字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!