A. php strlen utf8一個中文算3個位元組嗎
utf8是變長編碼, 不一定是3位元組, 可能是2~3, 當然ASCII字元還是1位元組.gbk也是變長編碼, 非ASCII的2位元組, ASCII還是1位元組.這兩個編碼對於非ASCII字元, 都是多位元組的, 並且多位元組字元每個位元組都是>127的, 也就是負數(最高位是1).另外, PHP里的strlen不是依靠判斷字元串結尾的, 因為PHP是腳本語言, 它的字元串和C++的string是一樣的, 將存儲的位元組個數當作字元串長度.另外, PHP里想數數有多少個位元組用strlen, 想數數有多少個字元, 用mb系列函數, 自己去了解一下.還有些需求, 比如字元串匹配查找之類的, gbk是存在雙位元組匹配問題的, 兩個連續漢字的中間2個位元組可能被誤認為其他字元, 所以不能用strstr之類的位元組匹配函數(PHP里是純位元組匹配的, 不關心), 但utf-8是可以的, 它不會有類似的沖突, 另外最好的做法當然還是用mb系列, 安全可靠, 而且還支持猜編碼功能.
B. php strlen的問題
php strlen() 函數返回字元串的長度。
<?php
$str = 'abcdef';
echo strlen($str); // 6
$str = ' ab cd ';
echo strlen($str); // 7
?>
strlen(string)
參數 描述
string 必需。規定要檢查的字元串。
//測試時文件的編碼方式[1]
<?php
$str='中文a字1符';
echo strlen($str).'<br>';//14
echo mb_strlen($str,'utf8').'<br>';//6
echo mb_strlen($str,'gbk').'<br>';//8
echo mb_strlen($str,'gb2312').'<br>';//10
?>
C. PHP判斷是中文還是英文
/*
判斷輸入是否是純數字,英文,漢字等
利用php的mb_strlen和strlen函數就可以輕松得知字元串的構成是全英文、中英混合、全中文。
1: 如果strlen返回的字元長度和mb_strlen以當前編碼計算的長度一致,則為純英文字元串
2: 如果strlen返回的字元長度和mb_strlen以當前編碼計算的長度不一致,並且strlen返回值和mb_strlen返回值求余後得0 則為全漢字
3: 如果strlen返回的字元長度和mb_strlen以當前編碼計算的長度不一致,並且strlen返回值和mb_strlen返回值求余後不為0 則為中英混合
*/
<?php
$str = "123456abc漢字";
$x = mb_strlen($str, 'gb2312');
$y = strlen($str);
echo "-----------$str----------<br>";
echo "x: ".$x."<br>";
echo "y: ".$y."<br>";
?>
D. php中strlen什麼意思
strlen獲取變數的長度,判斷是否等於2,這里有幾個問題,比如如果$i是中文的話結果可能有問題,使用mb_strlen避免錯誤。
E. php的strlen問題,為什麼相同的一句話,輸出結果不同呢
編碼問題。
UTF8編碼中,中文為3位元組,也就是一個中文字佔用3個位元組。
GB編碼中,中文為2位元組。
你可以數一下(那個冒號應該是英文字元,佔1位元組),31的那個是UTF8編碼,26的是GB編碼
並且中文有5個字,兩個差距正好差了5個位元組。
F. php如何獲取字元串長度,中文、符號、英文字母都算作一個
一般情況下 有漢字的時候 是使用 mb_strlen 這個函數來計算字元長度
這個函數需要開啟 mb_string擴展 默認都是不開啟的
G. php 中的mb_strlen 與 strlen 哪個跟javascript 中的length 相同,如果不同應該怎麼改的相同
額~ 如果是字元串長度的話 mb_strlen 和 Js 的 length 相同。
strlen是字元串長度,但是其實可以說是位元組長度,因為PHP還不支持unicode,所以對於多位元組字元沒法通過strlen正確的取得長度。如果編碼是gbk的話,一個漢字的長度是2, 如果是utf-8的話,一個漢字的長度一般是3,也可能不是,這個按照編碼區間來區分。
如果要出里多位元組字元字元串的話,就要用PHP 的一個 mb 擴展,mb族包含了一系列函數,可以去PHP 手冊看http://www.php.net/manual-lookup.php?pattern=mb&lang=en&scope=quickref
我也表達不是很明白。建議你網路或者google 一下 Unicode、ASCII、UTF-8、GBK~ 都看一下,就很明白了。PHP和JS支持的編碼不一樣,所以很多不一樣。
有問題可以Hi我。