首頁  >  文章  >  後端開發  >  php怎麼實作字串無亂碼翻轉

php怎麼實作字串無亂碼翻轉

藏色散人
藏色散人原創
2021-10-28 09:26:091287瀏覽

php實作字串無亂碼翻轉的方法:1、建立PHP範例檔案並設定編碼為utf8;2、用mb_strlen函取得算utf8字串的長度;3、將字串拆開放入數組;4、將數組按鍵名大小反轉;5、將數組中單一字元元素重新組合成字串即可。

php怎麼實作字串無亂碼翻轉

本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦

php怎麼實作字串無亂碼翻轉?

PHP中實作中文字串反轉避免亂碼的方法:

   今天部落客在網路上看PHP面試題的時候,看到了這麼一個問題,如何實現字串反轉,當時想不是有一個內建函數strrev能實現這個函數嗎?後來試了一下,這個函數只能對英文字元反轉,對中文會有亂碼出現。主要原因還是編碼上的問題。

   PHP中utf-8編碼中文當作3個位元組計算,gb2312當作2個位元組計算。所以想要實作中文字串的一些功能,首先就要解決編碼問題。

   今天這個功能就是從編碼處下手的。接下來開始講實現的功能,今天要用到這麼多函數:

is_string()//判断参数是否为字符串,这个大家应该都知道
mb_check_encoding()//用来检查给定的字符串是否属于指定的编码
mb_strlen()//用来获取字符串长度
mb_substr()//用来截取字符串中的字符
krsort()//将数组按键名由大到小排序上述

   上面用到了3個mb開頭的函數,mb開頭的函數都是用來處理多位元組字串的,主要是能指定字串編碼。

mb_check_encoding()接受兩個參數,第一個參數要是字串,第二個參數是輸入一個字元編碼,然後判斷字串是否屬於該編碼,傳回一個bool值,若省略第二個參數則預設為內部編碼,可透過mb_internal_encoding()查看。

mb_strlen()有兩個參數,第一個是字串內容,第二個是字串的編碼。

mb_substr()有四個參數,第一個是要截取的字串內容,第二個是開始截取的位置,第三個是截取的長度,第四個是字串的編碼(本例要選擇utf-8,其他編碼都不會得到正確的結果)。

接下來就是完整的程式碼了,簡略的註解都已經標註好了,其實只要看一遍都能看懂:

<?php
    header("Content-type:text/html;charset=utf-8");
    $s="这是我的技术博客,欢迎多多来访!";
                             
    function str_rev($str){
        //先判断参数是否为字符串,且为UTF8编码
        if(!is_string($str)||!mb_check_encoding($str,"utf-8")){
            die("输入的不是utf8类型的字符串");
        }
                                 
        //用mb_strlen函获取算utf8字符串的长度
        $length=mb_strlen($str,"utf-8");
                                 
        //声明一个数组备用
        $arr=array();
                                 
        //将字符串拆开放入数组
        for($i=0;$i<$length;$i++){
            $arr[$i]=mb_substr($str,$i,1,"utf-8");
        }
                                 
        //将数组按键名大小反转
        krsort($arr);
                                 
        //将数组中单个字符元素重新组合成字符串
        $str=implode("",$arr);
                                 
        //将翻转后的字符串返回
        return $str;
    }
                             
    echo $s."<br>";
    echo str_rev($s);
/*  得到结果:
 *  这是我的技术博客,欢迎多多来访!
 *  !访来多多迎欢,客博术技的我是这
 */
?>

如果文中有任何錯誤,敬請指出,以便完善。

推薦學習:《PHP影片教學

以上是php怎麼實作字串無亂碼翻轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn