我有一个 WordPress 网站。
我创建了简单的页面模板,例如:
<?php
/**
* Template Name: Test
*/
echo strlen('Привет');
?>
然后我使用这个模板创建了一个页面。该页面显示俄语字符串“Привет”(意思是“你好”)的长度。我期望看到 12,因为由 6 个字符组成的 UTF-8 编码的俄语字符串应该具有 12 个字节的大小,但我得到的是 6。
我在其他服务器上测试了同样的东西,并得到了正确的值 - 12。所以我认为原因是我的服务器配置。我有 wp 3.2.1 (升级到 wp 3.5.1 后我遇到了同样的问题)和 PHP 5.3.3。
目前我花了大约 5 天的时间试图找到解决方案,但没有运气。有谁知道这种行为的原因是什么?
检查mbstring.func_overload设置在php.ini
。此选项允许 PHP 使用 mb_strlen() 覆盖 strlen() 函数(对于其他等效函数也类似)。这可以解释您的服务器之间的差异
EDIT
引用文档链接:
要使用函数重载,请将 php.ini 中的 mbstring.func_overload 设置为
一个正值,表示指定位掩码的组合
要重载的函数类别。应将其设置为 1
重载 mail() 函数。 2 用于字符串函数,4 用于常规函数
表达函数。例如设置为7,邮件,字符串
并且正则表达式函数将被重载。
所以一个值与2 bit
set 意味着基本字符串函数将用其 mbstring 等效函数重载,但邮件或正则表达式函数不会重载;如果你想normal
行为,这应该是 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)