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);
|
请发表评论