ホームページ  >  記事  >  バックエンド開発  >  文字化けを避けるためにPHPで中国語の文字列を反転する方法

文字化けを避けるためにPHPで中国語の文字列を反転する方法

不言
不言オリジナル
2018-04-16 14:05:382156ブラウズ

この記事では、文字化けを避けるためにPHPで中国語の文字列を反転する方法を主に紹介しますので、必要な友達に参考にしてください



。ブロガーはオンラインで PHP のインタビューの質問を見ていて、文字列を反転する方法という質問を見つけました。そのとき、この機能を実現できる組み込み関数 strrev はないのかと考えました。後で試してみたところ、この機能は英語のみを反転でき、中国語は文字化けしてしまうことが分かりました。主な理由は依然としてコーディングの問題です。



PHP では、utf-8 でエンコードされた中国語は 3 バイトとして計算され、gb2312 は 2 バイトとして計算されます。したがって、中国語の文字列の機能を実現したい場合は、まずエンコーディングの問題を解決する必要があります。




今日、この機能はコーディング部門から始まります。次に、実装された関数について説明します。今日は、次の関数を使用します。


りー


上記では、mb で始まる 3 つの関数が使用されています。mb で始まる関数は、主に文字列エンコーディングを指定するために、マルチバイト文字列を処理するために使用されます。


mb_check_encoding() は 2 つのパラメータを受け入れます。最初のパラメータは文字列である必要があり、文字列がそのエンコードに属しているかどうかを判断し、ブール値を返します。 2 番目のパラメータを省略した場合、デフォルトで内部エンコーディングが使用され、mb_internal_encoding() を通じて表示できます。

mb_strlen() には 2 つのパラメータがあり、1 つ目は文字列の内容、2 つ目は文字列のエンコーディングです。

mb_substr() には 4 つのパラメータがあり、1 つ目はインターセプトする文字列の内容、2 つ目はインターセプトの開始位置、3 つ目はインターセプトの長さ、4 つ目はインターセプトのエンコーディングです。文字列 (この場合、UTF-8 が選択されており、他のエンコードでは正しい結果が得られません)。



以下は、簡単なコメントがマークされている完全なコードです。実際、一度読めば理解できます。 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38


<?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);
/*  得到结果:
 *  这是我的技术博客,欢迎多多来访!
 *  !访来多多迎欢,客博术技的我是这
 */


?>


如果文中有任何错误,敬请指出,以便完善。


本文来自:http://5655237.blog.51cto.com/5645237/1258300

相关推荐:

php中实现sftp的方法



以上が文字化けを避けるためにPHPで中国語の文字列を反転する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPのglob()関数次の記事:PHPのglob()関数