>  기사  >  백엔드 개발  >  문자 깨짐을 방지하기 위해 PHP에서 중국어 문자열을 뒤집는 방법

문자 깨짐을 방지하기 위해 PHP에서 중국어 문자열을 뒤집는 방법

不言
不言원래의
2018-04-16 14:05:382215검색

이 글에서는 문자 깨짐을 방지하기 위해 PHP에서 중국어 문자열 반전을 구현하는 방법을 주로 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다. 그 블로거는 온라인에서 PHP 인터뷰 질문을 보고 있었는데, 문자열을 어떻게 뒤집을 수 있는지에 대한 질문을 보았습니다. 그 당시 그는 이 기능을 수행할 수 있는 내장 함수 strrev가 있지 않을까라고 생각했습니다. 나중에 시도해 보니 이 기능은 영어 문자만 반전할 수 있고 한자의 경우 문자가 깨질 수 있다는 사실을 발견했습니다. 주된 이유는 여전히 코딩 문제입니다.



PHP에서 utf-8로 인코딩된 중국어는 3바이트로 계산되고, gb2312는 2바이트로 계산됩니다. 따라서 중국어 문자열의 일부 기능을 구현하려면 먼저 인코딩 문제를 해결해야 합니다.




오늘 이 기능은 코딩부서부터 시작됩니다. 다음으로 구현된 함수에 대해 이야기해 보겠습니다.


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


위에서는 mb로 시작하는 세 가지 함수가 사용됩니다. mb로 시작하는 함수는 주로 문자열 인코딩을 지정하기 위해 멀티바이트 문자열을 처리하는 데 사용됩니다.


mb_check_encoding()은 두 개의 매개변수를 허용합니다. 첫 번째 매개변수는 문자열이어야 합니다. 두 번째 매개변수는 문자 인코딩을 입력한 다음 문자열이 인코딩에 속하는지 확인하고 부울 값을 반환합니다. 두 번째 매개변수가 생략되면 기본적으로 내부 인코딩으로 설정되며, 이는 mb_internal_encoding()을 통해 확인할 수 있습니다.

mb_strlen()에는 두 개의 매개변수가 있습니다. 첫 번째는 문자열 내용이고 두 번째는 문자열 인코딩입니다.

mb_substr()에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP의 glob() 함수다음 기사:PHP의 glob() 함수