Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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_Wordpress_Strlen - Fatal编程技术网

PHP:strlen返回字符长度而不是字节长度

PHP:strlen返回字符长度而不是字节长度,php,wordpress,strlen,Php,Wordpress,Strlen,我有一个wordpress网站 我创建了简单的页面模板,如: <?php /** * Template Name: Test */ echo strlen('Привет'); ?> 然后我用这个模板创建了一个页面。该页面显示了俄文字符串“ППццццц”(表示“Hello”)的长度。我希望看到12,因为由6个字符组成的UTF-8编码的俄语字符串应该有12个字节的大小,但我得到的是6 我在其他服务器上测试了同样的东西,得到了正确的值-12。所以我认为原因是我的服

我有一个wordpress网站

我创建了简单的页面模板,如:

<?php 
 /**
 * Template Name: Test
 */

 echo strlen('Привет');

 ?>

然后我用这个模板创建了一个页面。该页面显示了俄文字符串“ППццццц”(表示“Hello”)的长度。我希望看到12,因为由6个字符组成的UTF-8编码的俄语字符串应该有12个字节的大小,但我得到的是6

我在其他服务器上测试了同样的东西,得到了正确的值-12。所以我认为原因是我的服务器配置。我有wp3.2.1(升级到wp3.5.1后我遇到了同样的问题)和php5.3.3

目前,我已经花了大约5天的时间试图找到一个解决方案,但没有运气。有人知道这种行为的原因吗?

你试过吗:


您需要为此使用多字节字符串函数吗?例如

有关获取多字节字符字符串长度的更多信息,请参见。

检查
php.ini
中的设置。此选项允许PHP使用mb_strlen()覆盖strlen()函数(对于其他等价项也是如此)。这可以解释服务器之间的差异

编辑

从文档链接引用:

要使用函数重载,请将php.ini中的mbstring.func_重载设置为 表示位掩码组合的正值 要重载的函数的类别。应将其设置为1到1 重载mail()函数。2表示字符串函数,4表示常规函数 表达式函数。例如,如果设置为7,则为mail、strings 正则表达式函数将被重载

所以设置为
2位的值意味着基本字符串函数将使用其等效的mbstring重载,而不是mail或正则表达式函数;如果您想要
正常
行为,这应该是0

我的文件被设置为“UCS-2 be BOM”编码。(可从记事本++-编码菜单选项查看)

然后我使用了mb_strlen($line,“UCS-2”)函数,但是由于某种原因,我得到了不正确的字符串长度(例如mb_strlen(“somestr”,“UCS-2”)->6,我期望的是7)

我已经将文件的编码更改为“UTF-8”,并且能够获得正确的字符串长度


我不确定为什么其他编码类型的字符串长度不正确,但想与大家分享对我有用的内容。

问题是我需要strlen按原样工作并返回字节数。OP似乎想要字节数(而不是字符数),问题是我不使用mb_strlen。我知道mb_strlen将在我的情况下显示6,但为什么strlen会这样做。。。我不知道,@Neal的可能副本-这个问题与ord()无关这是正确的答案。我有mbstring.func_重载=“2”。我的正确值应该是多少?0。听起来你根本不想让多字节函数掩盖正常函数。
int mb_strlen ( string $str [, string $encoding ] )
Gets the length of a string.