當前位置:學者齋 >

計算機 >php語言 >

PHP如何獲取中文字符串長度

PHP如何獲取中文字符串長度

PHP對中文字符串的處理一直困擾於剛剛接觸php開發的新手程序員。下面就有小編分享PHP如何獲取中文字符串長度的方式,歡迎大家學習!

PHP如何獲取中文字符串長度

PHP自帶的函數如strlen()、mb_strlen()都是通過計算字符串所佔字節數來統計字符串長度的,一個英文字符佔1字節。例:

$enStr = ‘Hello,China!’;

echo strlen($enStr); // 輸出:12

而中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔字節也有差異。

gbk編碼下每個中文字符所佔字節為2,例:

$zhStr = ‘您好,中國!’;

echo strlen($zhStr); // 輸出:12

utf-8編碼下每個中文字符所佔字節為3,例:

$zhStr = ‘您好,中國!’;

echo strlen($zhStr); // 輸出:18

那麼如何計算這組中文字符串的`長度呢?有人可能會説gbk下獲取中文字符串長度除以2,utf-8編碼下除以3不就行了嗎?但是您要考慮字符串並不老實,99%的情況會以中英混合的情況出現。

這是WordPress中的一段代碼,主要思想就是先用正則將字符串分解為個體單元,然後再計算單元的個數即字符串的長度,代碼如下(只能處理utf-8編碼下的字符串):

$zhStr = ‘您好,中國!’;

$str = ‘Hello,中國!’;

// 計算中文字符串長度

function utf8_strlen($string = null) {

// 將字符串分解為單元

preg_match_all(“/./us”, $string, $match);

// 返回單元個數

return count($match[0]);

}

echo utf8_strlen($zhStr); // 輸出:6

echo utf8_strlen($str); // 輸出:9

mb_strlen()方法有同樣的效果

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-mo/jsj/php/nrz66.html