이 글에서는 문자 깨짐을 방지하기 위해 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 28293031323334353637 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에서 중국어 문자열을 뒤집는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!