由于个版本之间的差别,本文使用在线php运行测试,
5.4
,5.5
,5.6
版本之间的差别
5.4 版本运行代码及运行结果
这里不知道是在线运行平台的原因还是版本确实不支持,这里的提示为没有找到相关的函数.但是官方明确表明,该函数在4.0.6
版本中已经加入.如果各位感兴趣可以在本地使用5.4
版本进行测试一下,如果提示不相同或者是可以运行,还望邮件提醒我一下.
代码
<?php
echo PHP_VERSION;
echo '</br>';
echo mb_strlen('测试一段文字','utf8');
?>
运行结果
5.4.43
PHP Fatal error: Call to undefined function mb_strlen() in /tmp/f3735731-fefa-4fbb-823e-268a0af5ceff/code on line 4
5.5 版本运行代码及运行结果
在5.5
这个版本测试中,会出现一个奇怪的现象.如果第二个参数不传递,会统计错误.但是官方的说明中,已经明确说出,encoding 参数为字符编码。如果省略,则使用内部字符编码。
.但是在测试中,如果省略,会被当做英文字符进行统计.当然这个说法是相对于5.6
版本来说的.
代码
<?php
echo PHP_VERSION;
echo '</br>';
echo mb_strlen('测试一段文字','utf8');
?>
运行结果
5.5.9-1ubuntu4
6
5.5
不传传递编码格式参数的运行代码及运行结果
代码
<?php
echo PHP_VERSION;
echo '</br>';
echo mb_strlen('测试一段文字','utf8');
?>
运行结果
5.5.9-1ubuntu4
18
5.6版本运行代码及运行结果
在5.6
版本中运行,对于我个人理解,是一个比较正确可以接受的结果.
代码
<?php
echo PHP_VERSION;
echo '</br>';
echo mb_strlen('测试一段文字');
?>
运行结果
5.6.9-0+deb8u1
6
5.6
传递编码格式参数的运行代码及运行结果
代码
<?php
echo PHP_VERSION;
echo '</br>';
echo mb_strlen('测试一段文字','utf8');
?>
运行结果
5.6.9-0+deb8u1
6