免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2155 | 回复: 0
打印 上一主题 下一主题

转换unicode十进制内码为utf-8编码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览
  1. function uni($str)
  2. {
  3.     $ret = '';
  4.     for ($i = 0; $i < mb_strlen($str, 'utf-8'); $i = $i + 1) {
  5.         $ret .= "&#" . uniord(mb_substr($str, $i, 1, 'utf-8')) . ";";
  6.     }
  7.     return $ret;
  8. }

  9. function uniord($u)
  10. {
  11.     $c = unpack("N", mb_convert_encoding($u, 'UCS-4BE', 'UTF-8'));
  12.     return $c[1];
  13. }

  14. function unichr($u)
  15. {
  16.     return mb_convert_encoding(pack("N", $u), mb_internal_encoding(), 'UCS-4BE');
  17. }

  18. function u2utf8($c)
  19. {
  20.     $str = "";
  21.     if ($c < 0x80) {
  22.         $str .= chr($c);
  23.     } else if ($c < 0x800) {
  24.         $str .= chr(0xC0 | $c >> 6);
  25.         $str .= chr(0x80 | $c & 0x3F);
  26.     } else if ($c < 0x10000) {
  27.         $str .= chr(0xE0 | $c >> 12);
  28.         $str .= chr(0x80 | $c >> 6 & 0x3F);
  29.         $str .= chr(0x80 | $c & 0x3F);
  30.     } else if ($c < 0x200000) {
  31.         $str .= chr(0xF0 | $c >> 18);
  32.         $str .= chr(0x80 | $c >> 12 & 0x3F);
  33.         $str .= chr(0x80 | $c >> 6 & 0x3F);
  34.         $str .= chr(0x80 | $c & 0x3F);
  35.     }
  36.     return $str;
  37. }

  38. $source = '好好学习,天天向上';
  39. $source = uni($source);
  40. var_dump($source); 
  41. // string(69) "&#22909;&#22909;&#23398;&#20064;&#44;&#22825;&#22825;&#21521;&#19978;" //
  42. preg_match_all("/&#([0-9]+);/", $source, $regs);
  43. var_dump($regs);
  44. foreach ($regs[1] as $v) {
  45.     $source = str_replace("&#$v;", u2utf8($v), $source);
  46. }
  47. var_dump($source);
  48. // string(25) "好好学习,天天向上" //
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP