漢字轉換成unicode方法
代碼如下 |
複製代碼 |
<?php //將utf8編碼的漢字轉換為unicode function htou($c){ $n = (ord($c[0]) & 0x1f) << 12; $n = (ord($c[1]) & 0x3f) << 6; $n = ord($c[2]) & 0x3f; return $n; } //在代碼中隱藏utf8格式的字串 function my_utf8_unicode($str) { $encode=''; for($i=0;$i<strlen($str);$i ){ if(ord(substr($str,$i,1))> 0xa0){ $encode.='&#'.htou(substr($str,$i,3)).';'; $i =2; }else{ $encode.='&#'.ord($str[$i]).';'; } } return $encode; } echo my_utf8_unicode("哈哈ABC"); ?> |
漢字轉換成unicode方法二
代碼如下 |
複製代碼 |
function getUnicode($word) { // 轉UTF8 $word0 = iconv('gbk', 'utf-8', $word); $word1 = iconv('utf-8', 'gbk', $word0); $word = ($word1 == $word) ? $word0 : $word; // 拆分漢字 preg_match_all('#(?:[x00-x7F]|[xC0-xFF][x80-xBF]+)#s', $word, $array, PREG_PATTERN_ORDER); $return = array(); // 轉換 foreach ($array[0] as $cc) { $arr = str_split($cc); $bin_str = ''; foreach ($arr as $value) { $bin_str .= decbin(ord($value)); } $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str); $return[] = '&#' . bindec($bin_str) . ';'; } return implode('', $return); }
|
函數用法:
代碼如下 |
複製代碼 |
$word = '一個漢字轉換成Unicode四位元組編碼的PHP函數。'; echo getUnicode($word); |
上述將輸出如下結果:
一个汉字转换成Un
icode四字节编
码的PHP函数。
這一組函數可以將漢字轉成unicode編碼,也可以將unicode解碼成漢字。
將漢字轉成Unicode的函數:
代碼如下 |
複製代碼 |
function uni_encode ($word) { $word0 = iconv('gbk', 'utf-8', $word); $word1 = iconv('utf-8', 'gbk', $word0); $word = ($word1 == $word) ? $word0 : $word; $word = json_encode($word); $word = preg_replace_callback('/\\u(w{4})/', create_function('$hex', 'return '&#'.hexdec($hex[1]).';';'), substr($word, 1, strlen($word)-2)); return $word; } |
對Unicode編碼進行解碼的函數:
代碼如下 |
複製代碼 |
function uni_decode ($uncode) { $word = json_decode(preg_replace_callback('/&#(d{5});/', create_function('$dec', 'return '\u'.dechex($dec[1]);'), '"'.$uncode.'"')); return $word; } |