PHP decrypts Unicode and Escape encrypted strings
Chinese is not supported in json. If you use it to transmit Chinese data, data will be lost or garbled. You must send it before sending it. The string is encoded. Since the transmission requires js for data parsing, considering that there is an unescape function in js, if there is an escape function in php, the data is encoded and unescape is used to decode it on the client. This will Much more convenient.
This article will share with you a PHP decryption Unicode and Escape encrypted string function
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
function uni_decode($s) {
preg_match_all('/([0-9]{2,5});/', $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
$js[] = hexdec($js_uni[1][$i]);
}
$utf8 = array_merge($html_uni[1], $js);
$code = $s;
for($j=0;$j
$code = str_replace($source[$j], unicode2utf8($utf8[$j]), $code);
}
return $code;//$s;//preg_replace('/\u([0-9a-f]{4})/ie', "chr(hexdec(''))", $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我是孤魂! u8FD9u662Fu6D4Bu8BD5u6587u672CuFF01';
echo uni_decode($str); // 大家好,我是孤魂!这是测试文本!
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<🎜>function uni_decode($s) {<🎜>
<🎜>preg_match_all('/([0-9]{2,5});/', $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
<🎜>$js[] = hexdec($js_uni[1][$i]);<🎜>
<🎜>}<🎜>
<🎜>$utf8 = array_merge($html_uni[1], $js);<🎜>
<🎜>$code = $s;<🎜>
<🎜>for($j=0;$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%uFF0CI am a lonely soul! u8FD9u662Fu6D4Bu8BD5u6587u672CuFF01';
echo uni_decode($str); // Hello everyone, I am a lonely soul! This is test text!
|
Search on the Internet, there are many escape functions implemented in php, they are similar
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function phpescape($str){
preg_match_all("/[x80-xff].|[x01-x7f] /",$str,$newstr);
$ar = $newstr[0];
foreach($ar as $k=>$v){
if(ord($ar[$k])>=127){
$tmpString=bin2hex(iconv("GBK","ucs-2",$v));
if (!eregi("WIN",PHP_OS)){
$tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.="%u".$tmpString;
} else {
$reString.= rawurlencode($v);
}
}
return $reString;
}
|
1
2
3
4
5
6
7
8
9
10
11
13
14
15
16
|
function phpescape($str){
preg_match_all("/[x80-xff].|[x01-x7f] /",$str,$newstr);
$ar = $newstr[0];
foreach($ar as $k=>$v){
if(ord($ar[$k])>=127){
$tmpString=bin2hex(iconv("GBK","ucs-2",$v));
if (!eregi("WIN",PHP_OS)){
$tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.="%u".$tmpString;
} else {
$reString.= rawurlencode($v);
}
}
return $reString;
}
|
The above is the entire content of this article, I hope you all like it.
http://www.bkjia.com/PHPjc/1000065.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1000065.htmlTechArticlePHP decrypted Unicode and Escape encrypted strings do not support Chinese in json. If you use it to transmit Chinese data, data will appear. Lost or garbled, the string to be sent must be encoded before transmission...