php unicode轉utf-8

$s = '禾光';


$a = getFromUnicode($s);
var_dump($a);
function getFromUnicode($words){
    $letters = explode(';',$words);
    $result = '';
    foreach($letters as $l){
       if(!$l) continue;
      
        $l = hexdec($l);
    
        $l = decbin($l);
        
        $l = '00000000000'.$l;
        $str = array();
        $str[0] = '1110'.substr($l,-16,4);
        $str[1] = '10'.substr($l,-12,6);
        $str[2] = '10'.substr($l,-6);
      
        $txt = '';
        foreach ($str as $value){
            $txt .= chr(bindec($value));
        }
        $result .= $txt;
    }
    
    return $result;
}

function getUnicodeFromOneUTF8($word) {   
   //獲取其字符的內部數組表示,所以本文件應用utf-8編碼!   
   if (is_array( $word))   
    $arr = $word;   
  else  
     $arr = str_split($word);   
  //此時,$arr應類似array(228, 189, 160)   
   //定義一個空字符串存儲   

   $bin_str = '';   
   //轉成數字再轉成二進制字符串,最後聯合起來。
   
   foreach ($arr as $value)   {
   var_dump(decbin(ord($value)));
     $bin_str .= decbin(ord($value));
   }   

    //此時,$bin_str應類似111001001011110110100000,如果是漢字"你"   
   //正則截取   
   $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);   
    //此時, $bin_str應類似111001001011110110100000,如果是漢字"你"
    
     
      
   return dechex(bindec($bin_str)); //如想返回十六進制4f60,用這句   
 } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章