Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于语音标记和逗号的PHP strlen_Php_String_Strlen - Fatal编程技术网

关于语音标记和逗号的PHP strlen

关于语音标记和逗号的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

我有以下长度为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个

如何告诉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);