你好,这是问题所在:
当我到达 $_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)
你有什么想法吗?
strlen
不会加倍任何内容,它只是报告情况。具体来说,它报道有多少字节- 并不是有多少个字符-- 组成字符串。那是因为strlen
对什么是“字符”一无所知,盲目地认为1个字节=1个字符。因此我们说“strlen
不支持多字节”。
在您的情况下,浏览器似乎将 UTF-8 编码的数据提交到服务器。在 UTF-8 中,西里尔字母每个字符有两个字节。
如果您想找出字符串中的字符数,请使用多字节感知mb_strlen:
echo mb_strlen($word, 'UTF-8');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)