《PHP學(xué)習(xí):PHP 實現(xiàn)字符串翻轉(zhuǎn)(包含中文漢字)的實現(xiàn)代碼》要點:
本文介紹了PHP學(xué)習(xí):PHP 實現(xiàn)字符串翻轉(zhuǎn)(包含中文漢字)的實現(xiàn)代碼,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP實例包含漢字字符串亂碼
PHP實例PHP面試題,題目很短,也很常見,但更容易出錯,題目如下
PHP實例如何實現(xiàn)字符串翻轉(zhuǎn)?
PHP實例第一反應(yīng),當(dāng)然是strrev函數(shù)啦,這么容易的題目還放在面試?yán)锟?真不嫌麻煩啊?但是看了網(wǎng)上的答案后,發(fā)現(xiàn)自己錯了~~~
PHP實例strrev函數(shù)對英文很好用,直接可以實現(xiàn)字符串翻轉(zhuǎn),但是面對中文呢?肯定都是亂碼,對于這樣的問題有很多,比如strstr,substr等函數(shù)都是這樣的.還好PHP提供了mb_類的函數(shù)實現(xiàn)不同編碼、不同語言之間的相互轉(zhuǎn)換等操作.下面是我寫的PHP字符串翻轉(zhuǎn)函數(shù)(mb_類的函數(shù)需要開啟一個mb_string實現(xiàn)).
PHP實例解決方案
PHP實例代碼:
PHP實例
<?php
header("content-type:text/html;charset=utf-8");
/**
strrev() 函數(shù)反轉(zhuǎn)字符串.
語法
strrev(string)
參數(shù) 描述
string 必需.規(guī)定要反轉(zhuǎn)的字符串.
*/
/**
此函數(shù)的作用是反轉(zhuǎn)中文字符串
mb_strlen() 獲取字符的長度
mb_substr() 獲取字符的單個元素
krsort() 按照鍵值逆序排序數(shù)組,對關(guān)聯(lián)數(shù)組按照鍵名進(jìn)行降序排序
Array ( [8] => 國 [7] => 中 [6] => h [5] => s [4] => i [3] => l [2] => g [1] => n [0] => E ) English中國->國中hsilgnE
(ksort()對關(guān)聯(lián)數(shù)組按照鍵名進(jìn)行升序排序)
implode() 將數(shù)組拼接為字符串
explode() 使用字符串分隔字符串
*/
function str_rev_gb($str){
//判斷輸入的是不是utf8類型的字符,否則退出
if(!is_string($str)||!mb_check_encoding($str,'UTF-8')){
exit("輸入類型不是UTF8類型的字符串");
}
$array=array();
//將字符串存入數(shù)組
$l=mb_strlen($str,'UTF-8');//在mb_strlen計算時,選定內(nèi)碼為UTF8,則會將一個中文字符當(dāng)作長度1來計算
for($i=0;$i<$l;$i++){
$array[]=mb_substr($str,$i,1,'UTF-8');
}
//反轉(zhuǎn)字符串
krsort($array);
//拼接字符串
$string=implode($array);
return $string;
}
$str1 = "Englist";
$str2 = "English中國";
$str3 = "Eng中l(wèi)ish國";
$str4 = "中華人民共和國";
echo '直接用PHP自帶strrev函數(shù)反轉(zhuǎn):'.'<br />';
echo $str1."->".strrev($str1)."<br>";
echo $str2."->".strrev($str2)."<br>";
echo $str3."->".strrev($str3)."<br>";
echo $str4."->".strrev($str4)."<br>";
echo '<br />';
echo $str1."->".str_rev_gb($str1)."<br>";
echo $str2."->".str_rev_gb($str2)."<br>";
echo $str3."->".str_rev_gb($str3)."<br>";
echo $str4."->".str_rev_gb($str4)."<br>";
PHP實例運行結(jié)果:
PHP實例直接用PHP自帶strrev函數(shù)反轉(zhuǎn):
Englist->tsilgnE
English中國->??W?hsilgnE
Eng中l(wèi)ish國->???hsil???gnE
中華人民共和國->??A居枘?W?
Englist->tsilgnE
English中國->國中hsilgnE
Eng中l(wèi)ish國->國hsil中g(shù)nE
中華人民共和國->國和共民人華中
PHP實例需要注意的是,mb_strlen并不是PHP核心函數(shù),使用前需要確保在php.ini中加載了php_mbstring.dll,即確?!癳xtension=php_mbstring.dll”這一行存在并且沒有被注釋掉,否則會出現(xiàn)未定義函 數(shù)的問題.
PHP實例以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持維易PHP.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1284.html