溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php如何實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)

發(fā)布時間:2021-10-28 09:52:18 來源:億速云 閱讀:143 作者:iii 欄目:編程語言

這篇文章主要講解了“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ù)組中單個字符元素重新組合成字符串即可。

php如何實(shí)現(xiàn)字符串無亂碼翻轉(zhuǎn)

本文操作環(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)注!

向AI問一下細(xì)節(jié)

免責(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)容。

php
AI