国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP 實(shí)現(xiàn)字符串翻轉(zhuǎn)(包含中文漢字)的實(shí)現(xiàn)代碼

2024-05-04 23:56:27
字體:
供稿:網(wǎng)友

包含漢字字符串亂碼

PHP面試題,題目很短,也很常見,但更容易出錯(cuò),題目如下

如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?

第一反應(yīng),當(dāng)然是strrev函數(shù)啦,這么容易的題目還放在面試?yán)锟?,真不嫌麻煩???但是看了網(wǎng)上的答案后,發(fā)現(xiàn)自己錯(cuò)了~~~

strrev函數(shù)對英文很好用,直接可以實(shí)現(xiàn)字符串翻轉(zhuǎn),但是面對中文呢?肯定都是亂碼,對于這樣的問題有很多,比如strstr,substr等函數(shù)都是這樣的。還好PHP提供了mb_類的函數(shù)實(shí)現(xiàn)不同編碼、不同語言之間的相互轉(zhuǎn)換等操作。下面是我寫的PHP字符串翻轉(zhuǎn)函數(shù)(mb_類的函數(shù)需要開啟一個(gè)mb_string實(shí)現(xiàn))。

解決方案

代碼:

<?phpheader("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() 獲取字符的單個(gè)元素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計(jì)算時(shí),選定內(nèi)碼為UTF8,則會(huì)將一個(gè)中文字符當(dāng)作長度1來計(jì)算  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>";

運(yùn)行結(jié)果:

直接用PHP自帶strrev函數(shù)反轉(zhuǎn):
Englist->tsilgnE
English中國->??學(xué)?hsilgnE
Eng中l(wèi)ish國->???hsil???gnE
中華人民共和國->??匒居呰溺?學(xué)?

Englist->tsilgnE
English中國->國中hsilgnE
Eng中l(wèi)ish國->國hsil中g(shù)nE
中華人民共和國->國和共民人華中

需要注意的是,mb_strlen并不是PHP核心函數(shù),使用前需要確保在php.ini中加載了php_mbstring.dll,即確保“extension=php_mbstring.dll”這一行存在并且沒有被注釋掉,否則會(huì)出現(xiàn)未定義函 數(shù)的問題。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 阿城市| 辉南县| 洮南市| 四会市| 农安县| 元阳县| 平和县| 尼木县| 盘锦市| 和平县| 自贡市| 高清| 博野县| 交口县| 广西| 柳州市| 綦江县| 铁岭市| 兴和县| 尖扎县| 诸城市| 敦煌市| 东海县| 原阳县| 军事| 塔城市| 化德县| 漾濞| 林西县| 察哈| 平昌县| 五指山市| 万山特区| 马关县| 长泰县| 千阳县| 运城市| 渝中区| 溆浦县| 库尔勒市| 安西县|