php unicode符号化文字をutf-8形式に変換

2691 ワード

最近採集したとき、特殊な符号体を書くページ全体の漢字が統一されている文字は以下の通りです.
1 \u54c8\u55bd     //     
  
熱心なネットユーザーの助けで効果的に解決したのは頭が痛い.
1つ目:適用(&#)
変換関数は次のとおりです.
1 2 3 4 5 6 7 8 9 11 12 13 14 16 17 18 20// uicode utf-8 public   function unescape($str) {      $str = rawurldecode($str);      preg_match_all( "/(?:%u.{4})|.{4};|\d+;|.+/U" ,$str,$r);      $ar = $r[0];      //print_r($ar);      foreach ($ar  as   $k=>$v) {          if (substr($v,0,2) ==  "%u" ){              $ar[$k] = iconv( "UCS-2BE" , "UTF-8" ,pack( "H4" ,substr($v,-4)));          }          elseif(substr($v,0,3) ==  "" ){              $ar[$k] = iconv( "UCS-2BE" , "UTF-8" ,pack( "H4" ,substr($v,3,-1)));          }          elseif(substr($v,0,2) ==  "" ) {                $ar[$k] = iconv( "UCS-2BE" , "UTF-8" ,pack( "n" ,substr($v,2,-1)));          }      }      return   join ( "" ,$ar); }
 
2つ目:適用(#,U)
その後のプロジェクト開発では、この機能を実現するための小さなテクニックが何気なく見つかりました.
json_を通してdecode()という関数は、UTF-8に変換できますが、文字列をJSON形式の文字列につづる必要があることを前提としています.
 
1 json_decode( '[" :"]' , true );
返されるのは、下付き文字が0の配列ではありません.
注意:JSON文字列をつづるときは二重引用符を使用する必要があります.中かっこは[値]です.カッコは{キー:値};
 
3つ目:適用(#,U)
1 preg_replace( "#\\\u([0-9a-f]{4})#ie" "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))" ' :' );