Chinaunix首页 | 论坛 | 博客
  • 博客访问: 235578
  • 博文数量: 14
  • 博客积分: 2416
  • 博客等级: 大尉
  • 技术积分: 768
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-28 22:45
文章分类

全部博文(14)

文章存档

2011年(13)

2008年(1)

分类: 系统运维

2011-06-24 11:07:03

  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) "好好学习,天天向上" //
阅读(2913) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

huixia00102014-12-16 16:24:44

谢谢分享~帮到我了~