您好,登錄后才能下訂單哦!
這篇文章主要講解了“php如何實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php如何實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)”吧!
php實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)的方法:1、創(chuàng)建一個PHP示例文件并設(shè)置編碼為utf8;2、用mb_strlen函獲取算utf8字符串的長度;3、將字符串拆開放入數(shù)組;4、將數(shù)組按鍵名大小反轉(zhuǎn);5、將數(shù)組中單個字符元素重新組合成字符串即可。
本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版、DELL G3電腦
php怎么實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)?
PHP中實(shí)現(xiàn)中文字符串反轉(zhuǎn)避免亂碼的方法 :
今天博主在網(wǎng)上看PHP面試題的時候,看到了這么一個問題,如何實(shí)現(xiàn)字符串反轉(zhuǎn),當(dāng)時想不是有一個內(nèi)置函數(shù)strrev能實(shí)現(xiàn)這個功能嗎?后來試了一下,這個函數(shù)只能對英文字符進(jìn)行反轉(zhuǎn),對中文會有亂碼出現(xiàn)。主要原因還是編碼上的問題。
PHP中utf-8編碼中文當(dāng)作3個字節(jié)計(jì)算,gb2312當(dāng)作2個字節(jié)計(jì)算。所以想要實(shí)現(xiàn)中文字符串的一些功能,首先就要解決編碼問題。
今天這個功能就是從編碼處下手的。接下來開始講實(shí)現(xiàn)的功能,今天要用到這么幾個函數(shù):
is_string()//判斷參數(shù)是否為字符串,這個大家應(yīng)該都知道 mb_check_encoding()//用來檢查給定的字符串是否屬于指定的編碼 mb_strlen()//用來獲取字符串長度 mb_substr()//用來截取字符串中的字符 krsort()//將數(shù)組按鍵名由大到小排序上述
上面用到了3個mb開頭的函數(shù),mb開頭的函數(shù)都是用于處理多字節(jié)字符串的,主要是能指定字符串編碼。
mb_check_encoding()接受兩個參數(shù),第一個參數(shù)要是字符串,第二個參數(shù)是輸入一個字符編碼,然后判斷該字符串是否屬于該編碼,返回一個bool值,若省略第二個參數(shù)則默認(rèn)為內(nèi)部編碼,可通過mb_internal_encoding()查看。
mb_strlen()有兩個參數(shù),第一個是字符串內(nèi)容,第二個是字符串的編碼。
mb_substr()有四個參數(shù),第一個是要截取的字符串內(nèi)容,第二個是開始截取的位置,第三個是截取的長度,第四個是字符串的編碼(在本例中要選擇utf-8,其他編碼都不會得到正確的結(jié)果)。
接下來就是完整的代碼了,簡略的注釋都已經(jīng)標(biāo)注好了,其實(shí)只要看一遍都能看懂:
<?php header("Content-type:text/html;charset=utf-8"); $s="這是我的技術(shù)博客,歡迎多多來訪!"; function str_rev($str){ //先判斷參數(shù)是否為字符串,且為UTF8編碼 if(!is_string($str)||!mb_check_encoding($str,"utf-8")){ die("輸入的不是utf8類型的字符串"); } //用mb_strlen函獲取算utf8字符串的長度 $length=mb_strlen($str,"utf-8"); //聲明一個數(shù)組備用 $arr=array(); //將字符串拆開放入數(shù)組 for($i=0;$i<$length;$i++){ $arr[$i]=mb_substr($str,$i,1,"utf-8"); } //將數(shù)組按鍵名大小反轉(zhuǎn) krsort($arr); //將數(shù)組中單個字符元素重新組合成字符串 $str=implode("",$arr); //將翻轉(zhuǎn)后的字符串返回 return $str; } echo $s."<br>"; echo str_rev($s); /* 得到結(jié)果: * 這是我的技術(shù)博客,歡迎多多來訪! * !訪來多多迎歡,客博術(shù)技的我是這 */ ?>
感謝各位的閱讀,以上就是“php如何實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對php如何實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。