输出:http%3A%2F%2Fwww.w3school.com.cn
PHP:echo urlencode("http://www.w3school.com.cn")
输出:http%3A%2F%2Fwww.w3school.com.cn
在json中不支持中文,用它传送中文数据就会出现数据丢失或者乱码,必须在传送前对要发送的字符串进行编码,由于传送过去需要用js进行数据解析,考虑到js中有unescape函数,故若在php中有个escape函数,对数据进行编码,在客户端用unescape进行
解码,这样就会方便很多。
本文给大家分享一个PHP解密Unicode及Escape加密字符串函数
?
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
?php
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$icount($js_uni[1])$i++)
{
$js[]
=
hexdec($js_uni[1][$i])
}
$utf8
=
array_merge($html_uni[1],
$js)
$code
=
$s
for($j=0$jcount($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
|
$c6)
$str.=chr(0x80
|
$c
0x3f)
}
else
if
($c
0x10000)
{
$str.=chr(0xe0
|
$c12)
$str.=chr(0x80
|
$c6
0x3f)
$str.=chr(0x80
|
$c
0x3f)
}
else
if
($c
0x200000)
{
$str.=chr(0xf0
|
$c18)
$str.=chr(0x80
|
$c12
0x3f)
$str.=chr(0x80
|
$c6
0x3f)
$str.=chr(0x80
|
$c
0x3f)
}
return
$str
}
$str='%u5927%u5BB6%u597D%uFF0C我是孤魂!br
/u8FD9u662Fu6D4Bu8BD5u6587u672CuFF01'
echo
uni_decode($str)
//
大家好,我是孤魂!这是测试文本!
在网上搜索一把,很多用php实现的escape函数,大同小异
?
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
}
以上所述就是本文的全部内容了,希望大家能够喜欢。