我有一些代码可以解析一个html文件,我偶然发现了一个包含这个字符的页面,它搞砸了解析: “
当我执行以下代码时,$ len被赋值为3。
$test = "“";
$len = strlen($test);
我怀疑这个角色可能是unicode。
现在我通过用标准双引号替换卷曲双引号来解决这个问题。但是我担心其他可能包含类似字符的文件,我不想为每个单独的实例替换函数。
如何让php将其视为单个字符?
答案 0 :(得分:1)
PHP的标准字符串处理函数不是多字节感知的,它们愚蠢地计算字符串中的字节数。
如果您安装了multibyte extension,mb_strlen()
就是您要找的。 p>
例如,如果您的数据是UTF-8:
$test = "“";
$len = mb_strlen($test, "UTF-8");
答案 1 :(得分:1)
对于unicode,使用php函数以mb_(multibyte)开头:例如:http://php.net/manual/en/function.mb-strlen.php
答案 2 :(得分:1)
使用mb_strlen()
,它将处理多字节字符。
答案 3 :(得分:1)
您需要使用多字节版本的函数> http://php.net/manual/en/function.mb-strlen.php