关于语音标记和逗号的PHP strlen
我有以下长度为78个字符的字符串:关于语音标记和逗号的PHP strlen,php,string,strlen,Php,String,Strlen,我有以下长度为78个字符的字符串: PlayStation VR Available ‘April 2016’, According To VR Production Company Site 当我对这个字符串执行PHP函数strlen时,它给了我一个90的值 $title_lenth = strlen($the_title); echo $title_lenth; // 90 我认为这是因为strlen使用了语音标记和逗号的html实体,这将导致字符计数为5个字符,而不是1
PlayStation VR Available ‘April 2016’, According To VR Production Company Site
当我对这个字符串执行PHP函数strlen
时,它给了我一个90的值
$title_lenth = strlen($the_title);
echo $title_lenth; // 90
我认为这是因为strlen使用了语音标记和逗号的html实体,这将导致字符计数为5个字符,而不是1个
如何告诉strlen将标点符号计算为一个字符
我已经尝试使用mb_strlen
,但它返回相同的值
谢谢
如php.net上的注释所示
这将把字符串长度减少到72,看起来老的PHP版本的行为有所不同。PHP 5.5.3就是问题所在 我用以下方法解决了问题:
$the_title = html_entity_decode(get_the_title());
$the_title = utf8_decode($the_title);
$title_lenth = strlen($the_title);
导致问题的是非utf8引号。您不能像这样更改strlen()的行为,strlen()返回字符串中的字节数,html实体由几个字节组成。。。。您首先需要做的是使用类似的东西将该实体转换为字符,然后使用strlen()或mb_strlen()只是好奇-您使用的是什么版本的PHP?我正在使用5.6.19,当同时使用
strlen
和mb_strlen
时,我得到了78的预期结果。在我的例子中,当同时使用strlen和mb时,它给出了82_strlen@mark-谢谢你的提示-但是,这已将其减少到82-因此仍然不是预期的78@brandon-我使用的是5.5.3,所以可能是PHP的问题?
$str = "PlayStation VR Available ‘April 2016’, According To VR Production Company Site";
$str1 = str_replace(' ', '', $str);
$title_lenth = strlen($str1);
echo $title_lenth;
$the_title = html_entity_decode(get_the_title());
$the_title = utf8_decode($the_title);
$title_lenth = strlen($the_title);