<? Php Function uni_decode ($ s ){ Preg_match_all ('/\ # ([0-9] {}) \;/', $ s, $ html_uni ); Preg_match_all ('/[\\\%] u ([0-9a-f] {4})/ie', $ s, $ js_uni ); $ Source = array_merge ($ html_uni [0], $ js_uni [0]); $ Js = array (); For ($ I = 0; $ I <count ($ js_uni [1]); $ I ++ ){ $ Js [] = hexdec ($ js_uni [1] [$ I]); } $ Utf8 = array_merge ($ html_uni [1], $ js ); $ Code = $ s; For ($ j = 0; $ j <count ($ utf8); $ j ++ ){ $ Code = str_replace ($ source [$ j], unicode2utf8 ($ utf8 [$ j]), $ code ); } Return $ code; // $ s; // preg_replace ('// \\\ u ([0-9a-f] {4})/ie ', "chr (hexdec ('\ 1')", $ s ); } Function unicode2utf8 ($ c ){ $ Str = ""; If ($ c <0x80 ){ $ Str. = chr ($ c ); } Else if ($ c <0x800 ){ $ Str. = chr (0xc0 | $ c> 6 ); $ Str. = chr (0x80 | $ c & 0x3f ); } Else if ($ c <0x10000 ){ $ Str. = chr (0xe0 | $ c> 12 ); $ Str. = chr (0x80 | $ c> 6 & 0x3f ); $ Str. = chr (0x80 | $ c & 0x3f ); } Else if ($ c <0x200000 ){ $ Str. = chr (0xf0 | $ c> 18 ); $ Str. = chr (0x80 | $ c> 12 & 0x3f ); $ Str. = chr (0x80 | $ c> 6 & 0x3f ); $ Str. = chr (0x80 | $ c & 0x3f ); } Return $ str; } $ Str = '% u5927 % u5BB6 % u597D % uFF0C I am a lone soul! <Br/> \ u8FD9 \ u662F \ u6D4B \ u8BD5 \ u6587 \ u672C \ uFF01 '; Echo uni_decode ($ str); // Hello, everyone! This is the test text! |