天天看點

PHP如何實作自定義函數來翻轉中文PHP自定義函數實作翻轉中文的功能

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”這一行存在并且沒有被注釋掉,否則會出現未定義函 數的問題;