js的encodeuricomponent 的php解码到底是用urldecode还是iconv()

JavaScript021

js的encodeuricomponent 的php解码到底是用urldecode还是iconv(),第1张

JS:document.write(encodeURIComponent("http://www.w3school.com.cn"))

输出: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

}

以上所述就是本文的全部内容了,希望大家能够喜欢。