PHP Unicode编码相互转换的例子

三月 06, 2019 | views
Comments 0

Unicode编码我们用到的不多因为Unicode编码在源码中都是字符了,但有时会用到Unicode编码了,下面我们一起来看一篇PHP Unicode编码相互转换的例子,希望例子能够对各位有帮助.

  1. /** 
  2. * $str 原始中文字符串 
  3. * $encoding 原始字符串的编码,默认utf-8 
  4. * $prefix 编码后的前缀,默认"&#" 
  5. * $postfix 编码后的后缀,默认";" 
  6. */ 
  7. function unicode_encode($str, $encoding = 'utf-8', $prefix = '&#', $postfix = ';') { 
  8.     //将字符串拆分 
  9.     $str = <a href="/tags.php/iconv/" target="_blank">iconv</a>("UTF-8""gb2312", $str); 
  10.     $cind = 0; 
  11.     $arr_cont = array(); 
  12.     for ($i = 0; $i < strlen($str); $i++) { 
  13.         if (strlen(<a href="/tags.php/substr/" target="_blank">substr</a>($str, $cind, 1)) > 0) { 
  14.             if (ord(substr($str, $cind, 1)) < 0xA1) { //如果为英文则取1个字节  
  15.                 array_push($arr_cont, substr($str, $cind, 1)); 
  16.                 $cind++; 
  17.             } else { 
  18.                 array_push($arr_cont, substr($str, $cind, 2)); 
  19.                 $cind+=2; 
  20.             } 
  21.         } 
  22.     } 
  23.     <a href="/tags.php/foreach/" target="_blank">foreach</a> ($arr_cont as &$row) { 
  24.         $row = iconv("gb2312""UTF-8", $row); 
  25.     } 
  26.     //转换Unicode码 
  27.     foreach ($arr_cont as $key => $value) { 
  28.         $unicodestr.= $prefix . base_convert(bin2hex(iconv('utf-8''UCS-4', $value)), 16, 10) .$postfix; 
  29.     } 
  30.     return $unicodestr; 
  31. /** 
  32. * $str Unicode编码后的字符串 
  33. * $decoding 原始字符串的编码,默认utf-8 
  34. * $prefix 编码字符串的前缀,默认"&#" 
  35. * $postfix 编码字符串的后缀,默认";" 
  36. */ 
  37. function unicode_decode($unistr, $encoding = 'utf-8', $prefix = '&#', $postfix = ';') { 
  38.     $arruni = <a href="/tags.php/explode/" target="_blank">explode</a>($prefix, $unistr); 
  39.     $unistr = ''
  40.     for ($i = 1, $len = count($arruni); $i < $len; $i++) { 
  41.         if (strlen($postfix) > 0) { 
  42.             $arruni[$i] = substr($arruni[$i], 0, strlen($arruni[$i]) - strlen($postfix)); 
  43.         } 
  44.         $temp = intval($arruni[$i]); 
  45.         $unistr .= ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256); 
  46.     } 
  47.     return iconv('UCS-2', $encoding, $unistr); 
  48. $str = "PHP二次开发:www.phpfensi.com"
  49. $unistr = unicode_encode($str); 
  50. $unistr2 = unicode_decode($unistr); 
  51. echo $unistr . '<br />'
  52. echo $unistr2 . '<br />'
  53. $unistr = unicode_encode($str,'GBK','\\u'); 
  54. $unistr2 = unicode_decode($unistr,'GBK','\\u'); 
  55. echo $unistr . '<br />'
  56. echo $unistr2 . '<br />'



zend