PHP自定義函數實作翻轉中文的功能
對于PHP語言來說,說到字元串翻轉大家首先想到應該就是strrev()這個函數了,
定義和用法
strrev() 函數反轉字元串。
文法
strrev(string)
參數 描述
string 必需。規定要反轉的字元串。
例如:
<?php
echo strrev("Hello World!");
?>
輸出結果為:!dlroW olleH
strrev()這個函數對英文很好用,直接可以實作字元串翻轉,但是如果是中文的話那麼就都是亂碼了
例如:
<?php
echo strrev("您好世界!");
?>
輸出結果為:��疸佥娂� 這個結果是不是沒有人能看得懂啊。那麼下面于老師就給大家分享一下如何反轉中文的代碼;
第一種方法:
function selfStrrev($str){
//判斷輸入的是不是utf8類型的字元,否則退出
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=implode($array);
return $string;
}
$str = "于老師特别帥";
echo selfStrrev($str);
輸出結果為:帥别特師老于;
第二種方法:
function selfStrrev($str){
//判斷輸入的是不是utf8類型的字元,否則退出
if(!is_string($str)||!mb_check_encoding($str,'UTF-8')){
exit("輸入類型不是UTF8類型的字元串");
}
//定義一個新的字元串 用來存儲反轉後的字元串
$revStr = "";
$l=mb_strlen($str,'UTF-8');//在mb_strlen計算時,標明内碼為UTF8,則會将一個中文字元當作長度1來計算
for($i=$l;$i>0;$i--){
$revStr .= mb_substr($str,$i-1,1,'UTF-8'); //從最後一位開始截取,一直截取到第一位 然後拼接到定義好的新的字元串裡面
}
return $revStr;
}
$str = "于老師特别帥";
echo selfStrrev($str);
輸出結果為:帥别特師老于;
這裡用到的技術就是mb_XXX 系列函數,需要注意的mb_XXX 系列函數是并不是PHP核心函數,使用前需要確定在php.ini中加載了php_mbstring.dll,即確定“extension=php_mbstring.dll”這一行存在并且沒有被注釋掉,否則會出現未定義函 數的問題;