PHP中文字符串反转编码错误解决方式
在使用PHP处理字符串反转的时候,我们第一反应是使用PHP的内置函数strrev来处理,思维上是没有问题的,但是我们需要知道一个问题,函数strrev是否可以处理中文汉字的字符串呢?带着疑问我们一起来看一下。
一、strrev函数介绍
1、定义:反转字符串
2、用法:
strrev(string)
3、参数:必需传递参数。规定要反转的字符串
4、适用版本:PHP4+
5、示例
<?php echo strrev("I love China!"); ?>
6、运行结果
!ianihC evol I
二、实例测试
1、测试英文字符串
内容:I love China
代码:
<?php echo strrev("I love China"); ?>
运行结果:
ianihC evol I
结论:可以正常将字符串进行转化,无任何异常。
2、测试中文字符串
内容:我爱中国
代码:
<?php echo strrev("我爱中国"); ?>
运行结果:
��學䱈瑈�
结论:无法将中文字符串进行转换,出现乱码情况
3、测试英文+中文字符串
内容:我爱China
代码:
<?php echo strrev('我爱China'); ?>
运行结果:
anihC��瑈�
结论:可以将英文字符串进行正常反转,中文汉字部分依旧出现乱码情况。
三、中文字符串反转解决方案
方案一:使用mb_substr() 函数和mb_strlen函数相互结合对字符串进行循环截取拼合。
示例代码:
function mb_strrev($str){ $r = ''; for ($i = mb_strlen($str); $i>=0; $i--) { $r .= mb_substr($str, $i, 1); } return $r; } echo mb_strrev("我爱中国"); echo mb_strrev("我爱China"); echo mb_strrev("I love China");
运行结果:
国中爱我 anihC爱我 anihC evol I
结论:此方法可以将字符串进行反转
四、结论
PHP内置函数strrev可以将纯字母类型的字符串进行反转,如果字符串内含有中文、中文符号则无法反转。需要使用函数相互结合方式进行反转。