fre*_*2ak 2 php string double strlen
你好,这是问题:当我到达$ _POST拉丁字符串strilen()完美的工作,但当我得到西里尔字符串strlen()双倍其值这里是代码:
$word = $_POST['word'];
echo strlen($word) . '<br>'; //input: abc -> returns 3, input: ??? -> returns 6
var_dump($word); //input: abc -> returns string 'abc' (length=3), input: ??? -> returns string '???' (length=6)
Run Code Online (Sandbox Code Playgroud)
你有什么想法吗?!
Jon*_*Jon 10
strlen
不会加倍,它只是报告情况.具体来说,它报告字符串组成的字节数 - 而不是多少字符数.那是因为strlen
不知道"字符"是什么,并且盲目地假定1字节= 1个字符.因此我们说" strlen
不是多字节意识".
在您的情况下,似乎浏览器将UTF-8编码数据提交给服务器.在UTF-8中,西里尔文是每个字符两个字节.
如果要查找字符串中的字符数,请使用多字节识别mb_strlen
:
echo mb_strlen($word, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3901 次 |
最近记录: |