Heim >Backend-Entwicklung >PHP-Tutorial >php汉字转码 Unicode(UTF8)至GBK编码转换

php汉字转码 Unicode(UTF8)至GBK编码转换

WBOY
WBOYOriginal
2016-07-25 08:53:411875Durchsuche
  1. //php汉字转码
  2. class qswhU{
  3. var $qswhData;
  4. function qswhU($filename="qswhU.php"){
  5. $this->qswhData=file($filename);
  6. }
  7. function decode($str,$pattern=0){
  8. $arr=array("/(/w+);/iU","/((%/w/w)+)/i","/%u(/w{4,5})/iU");
  9. if(is_integer($pattern)){
  10. if($pattern>=count($arr))die("Invalid Function");
  11. $pattern=$arr[$pattern];
  12. }
  13. return preg_replace_callback($pattern,array($this,"u2gb"),$str);
  14. } // 程序员之家 bbs.it-home.org
  15. function u2gb($arr){
  16. /******(qiushuiwuhen 2002-8-15)******/
  17. $ret="";$str=$arr[1];
  18. if(preg_match_all("/%/w{2}/",$str,$matches)){
  19. for($i=0;$i $chr1=hexdec(substr($matches[0][$i],1));
  20. $arr=array("f0","e0","c0","0");
  21. for($j=0;$jhexdec($arr[$j]))break;
  22. $chr=hexdec(substr($matches[0][$i],1))-hexdec($arr[$j]);
  23. while(++$j $str=dechex($chr);
  24. if(strlen($str)==4){
  25. $p=hexdec(substr($str,0,2))-0x4d;
  26. $q=hexdec(substr($str,2))*4;
  27. $ret.=chr(hexdec(substr($this->qswhData[$p],$q,2)));
  28. $ret.=chr(hexdec(substr($this->qswhData[$p],$q+2,2)));
  29. }else
  30. $ret.=chr(hexdec($str));
  31. }
  32. }
  33. else{
  34. if(strtolower($str[0])=="x")
  35. $str=substr($str,1);
  36. else
  37. if(strlen($str)!=4)$str=dechex($str);
  38. if(strlen($str)==4){
  39. $p=hexdec(substr($str,0,2))-0x4d;
  40. $q=hexdec(substr($str,2))*4;
  41. $ret.=chr(hexdec(substr($this->qswhData[$p],$q,2)));
  42. $ret.=chr(hexdec(substr($this->qswhData[$p],$q+2,2)));
  43. }else
  44. $ret.=chr(hexdec($str));
  45. }
  46. return $ret;
  47. }
  48. }
复制代码

使用实例:

  1. $qswh=new qswhU("qswhU.php");//如果文件名是qswhU.php,可省参数
  2. echo "不带参数(默认过滤为:[num];):";
  3. echo "/n".$qswh->decode("中文Abc");
  4. echo "/n".$qswh->decode("中文Abc");
  5. echo "/n调用内置过滤(UTF转码):".$qswh->decode("%E4%B8%AD%E6%96%87%20!%22%23%24%25%26'()*%2B%2C%2F%3A%3B%3C%3D%3E%3F%40%5B%5D%5E%60%7B%7C%7D~%25Abc",1);
  6. echo "/n调用内置过滤unescape(%u[num]):".$qswh->decode("%u4E2D%u6587Abc",2);
  7. echo "/n自定义过滤([x+num]):".$qswh->decode("[x4E2D][x6587][x41][x62][x63]","//[(/w+)/]/");
复制代码

效果如下: 不带参数(默认过滤为:[num];): 中文Abc 中文Abc 调用内置过滤(UTF转码):中文 !"#$%&'()*+,/:;?@[]^`{|}~%Abc 调用内置过滤unescape(%u[num]):中文Abc 自定义过滤([x+num]):中文Abc



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn