总结一下平时开发过程中遇到反转字符串功能带中文函数实现。
第一种
<?php
function reverse($str) {
$len = mb_strlen($str, 'utf-8');
for ($i = 0; $i < $len; $i++) {
$arr[] = mb_substr($str, $i, 1, "utf-8");
}
return implode("", array_reverse($arr));
}
header("Content-type: text/html; charset=utf-8");
print_r(reverse("php是世界上最好得语言qwe"));
第二种
<?php
header("content-type:text/html;charset=utf-8");
function str_rev_gb($str){
if(!is_string($str)||!mb_check_encoding($str,'UTF-8')){
exit("输入类型不是UTF8类型的字符串");
}
$array=array();
//将字符串存入数组
$l=mb_strlen($str,'UTF-8');//在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算
for($i=0;$i<$l;$i++){
$array[]=mb_substr($str,$i,1,'UTF-8');
}
//反转字符串
krsort($array);
//拼接字符串
$string=join($array);
return $string;
}
或者
function myStrrev($str,$encoding='utf-8'){
$newstr = '';
$len = mb_strlen($str);
for($i=$len-1; $i>=0; $i--){
$newstr .= mb_substr($str,$i,1,$encoding);
}
return $newstr;
}
上面用到得俩个自带函数 array_reverse 与 krsort 他们得区别是:
array_reverse() 将数组倒序排序,键值改变
krsort() 将数组倒序排序,键值不变
$array = array('0'=>a,'1'=>b,'2'=>c);
$a = array_reverse($array);
krsort($array);
print_r($array);
echo "__________";
print_r($a);
得出结果
Array ( [3] => c [2] => b [0] => a ) ________Array ( [0] => c [1] => b [2] => a )