php中实现中文字符串的反转

php中内置的函数strrev()只能反转英文的字符,在反转中文字符的时候因为编码的问题就会产生乱码。

因此只能自定义函数来实现了。思路如下

1、将utf8编码的中文字符逐个读出放到数组中。

2、将数组反转。

3、将反转后的数组拼接为字符串,返回

代码如下:

 1 <?php
2 header("content-type:text/html;charset=utf-8");
3 /*
4 此函数的作用是反转中文字符串
5 mb_strlen() 获取字符的长度
6 mb_substr() 获取字符的单个元素
7 krsort() 按照键值逆序排序数组
8 implode() 将数组拼接为字符串
9 explode() 使用字符串分隔字符串
10
11 */
12
13 function str_rev_gb($str){
14 /*判断输入的是不是utf8类型的字符,否则退出
15 */
16 if(!is_string($str)||!mb_check_encoding($str,'UTF-8')){
17 exit("输入类型不是UTF8类型的字符串");
18 }
19 $array=array();
20 /*将字符串存入数组
21 */
22 $l=mb_strlen($str,'UTF-8');
23 for($i=0;$i<$l;$i++){
24 $array[]=mb_substr($str,$i,1,'UTF-8');
25 }
26 /*反转字符串
27 */
28 krsort($array);
29 //print_r($array);
30 /*拼接字符串
31 */
32 $string=implode($array);
33 return $string;
34 }
35
36 $str="lucy,请我我吃饭吧,今天我高兴";
37 //$str=12345;
38 //$str="hello,beautiful!";
39
40 echo str_rev_gb($str);