Home  >  Article  >  Backend Development  >  PHP Chinese character transcoding Unicode (UTF8) to GBK encoding conversion

PHP Chinese character transcoding Unicode (UTF8) to GBK encoding conversion

WBOY
WBOYOriginal
2016-07-25 08:53:411861browse
  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];):";</li> <li>echo "/n".$qswh->decode("中文Abc");</li> <li>echo "/n".$qswh->decode("中文Abc");</li> <li>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);</li> <li>echo "/n调用内置过滤unescape(%u[num]):".$qswh->decode("%u4E2D%u6587Abc",2);</li> <li>echo "/n自定义过滤([x+num]):".$qswh->decode("[x4E2D][x6587][x41][x62][x63]","//[(/w+)/]/");</li> </ol></div> <em onclick="copycode($('code_HJP'));">复制代码</em> </div> <p>效果如下: 不带参数(默认过滤为:[num];): 中文Abc 中文Abc 调用内置过滤(UTF转码):中文 !"#$%&'()*+,/:;?@[]^`{|}~%Abc 调用内置过滤unescape(%u[num]):中文Abc 自定义过滤([x+num]):中文Abc</p> </td></tr></table> <div id="comment_46682" class="cm"> </div> <div id="post_rate_div_46682"></div> <br><br></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Statement:</span><div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div></div></div><div class="nphpSytBox"><span>Previous article:<a class="dBlack" title="php socket function list" href="http://m.php.cn/faq/315437.html">php socket function list</a></span><span>Next article:<a class="dBlack" title="php socket function list" href="http://m.php.cn/faq/315439.html">php socket function list</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Related articles</h2><em><a href="http://m.php.cn/article.html" class="bBlack"><i>See more</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/2.html" title="All expression symbols in regular expressions (summary)" class="aBlack">All expression symbols in regular expressions (summary)</a><div class="clear"></div></li></ul></div></div><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Public welfare online PHP training,Help PHP learners grow quickly!</p></div><div class="footermid"><a href="http://m.php.cn/about/us.html">About us</a><a href="http://m.php.cn/about/disclaimer.html">Disclaimer</a><a href="http://m.php.cn/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>