總結一下平時開發過程中遇到反轉字符串功能帶中文函數實現。
第一種
<?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 )