Home  >  Article  >  Backend Development  >  PHP implements escape and unescape function code sharing in Javascript_PHP tutorial

PHP implements escape and unescape function code sharing in Javascript_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:07:28883browse

PHP implements escape and unescape function code sharing in Javascript

This article mainly introduces PHP to implement escape and unescape function code sharing in Javascript. This article gives two implementations Version, friends in need can refer to it

This class is quite easy to use. What’s the purpose? PHP can use it to transfer GBK characters in JSON, such as Chinese, Japanese, Korean and Shenma’s Unicode.

?

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

40

41

42

43

44

45

46

47

48

49

50

51

52

classcoding

{

//模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能

functionunescape($str)

{

$text=preg_replace_callback("/%u[0-9A-Za-z]{4}/",array(

&$this,

'toUtf8'

),$str);

returnmb_convert_encoding($text,"gb2312","utf-8");

}

functiontoUtf8($ar)

{

foreach($aras$val){

$val=intval(substr($val,2),16);

if($val<0x7F){// 0000-007F

$c.=chr($val);

}elseif($val<0x800){// 0080-0800

$c.=chr(0xC0|($val/64));

$c.=chr(0x80|($val%64));

}else{// 0800-FFFF

$c.=chr(0xE0|(($val/64)/64));

$c.=chr(0x80|(($val/64)%64));

$c.=chr(0x80|($val%64));

}

}

return$c;

}

functionescape($string,$encoding='gb2312')

{

$return='';

for($x=0;$x

$str=mb_substr($string,$x,1,$encoding);

if(strlen($str)>1){// 多字节字符

$return.='%u'.strtoupper(bin2hex(mb_convert_encoding($str,'UCS-2',$encoding)));

}else{

$return.='%'.strtoupper(bin2hex($str));

}

}

return$return;

}

 

functiongb2utf8($string,$encoding='utf-8',$from_encode='gb2312')

{

returnmb_convert_encoding($string,$encoding,$from_encode);

}

 

}

?>

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 40 41 42 43 44 45 46 47 48 49 50 51 52
<🎜>classcoding<🎜> <🎜>{<🎜> <🎜>//Imitate the functions of JAVASCRIPT’s ESCAPE and UNESCAPE functions<🎜> <🎜>functionunescape($str)<🎜> <🎜>{<🎜> <🎜>$text=preg_replace_callback("/%u[0-9A-Za-z]{4}/",array(<🎜> <🎜>&$this,<🎜> <🎜>'toUtf8'<🎜> <🎜>),$str);<🎜> <🎜>returnmb_convert_encoding($text,"gb2312","utf-8");<🎜> <🎜>}<🎜> <🎜> <🎜> <🎜>functiontoUtf8($ar)<🎜> <🎜>{<🎜> <🎜>foreach($aras$val){<🎜> <🎜>$val=intval(substr($val,2),16);<🎜> <🎜>if($val<0x7F){// 0000-007F<🎜> <🎜>$c.=chr($val);<🎜> <🎜>}elseif($val<0x800){// 0080-0800<🎜> <🎜>$c.=chr(0xC0|($val/64));<🎜> <🎜>$c.=chr(0x80|($val%64));<🎜> <🎜>}else{// 0800-FFFF<🎜> <🎜>$c.=chr(0xE0|(($val/64)/64));<🎜> <🎜>$c.=chr(0x80|(($val/64)%64));<🎜> <🎜>$c.=chr(0x80|($val%64));<🎜> <🎜>}<🎜> <🎜>}<🎜> <🎜>return$c;<🎜> <🎜>}<🎜> <🎜> <🎜> <🎜>functionescape($string,$encoding='gb2312')<🎜> <🎜>{<🎜> <🎜>$return='';<🎜> <🎜>for($x=0;$x <🎜>$str=mb_substr($string,$x,1,$encoding);<🎜> <🎜>if(strlen($str)>1){//Multi-byte characters $return.='%u'.strtoupper(bin2hex(mb_convert_encoding($str,'UCS-2',$encoding))); }else{ $return.='%'.strtoupper(bin2hex($str)); } } return$return; } functiongb2utf8($string,$encoding='utf-8',$from_encode='gb2312') { returnmb_convert_encoding($string,$encoding,$from_encode); } } ?>

Another similar script found on google code

?

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

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

functionphpescape($str)

{

$sublen=strlen($str);

$retrunString="";

for($i=0;$i<$sublen;$i++)

{

if(ord($str[$i])>=127)

{

$tmpString=bin2hex(iconv("gbk","ucs-2",substr($str,$i,2)));

$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);

$retrunString.="%u".$tmpString;

$i++;

}else{

$retrunString.="%".dechex(ord($str[$i]));

}

}

return$retrunString;

}

functionescape($str)

{

preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$r);

$ar=$r[0];

foreach($aras$k=>$v)

{

if(ord($v[0])<128)

$ar[$k]=rawurlencode($v);

else

$ar[$k]="%u".bin2hex(iconv("UTF-8","UCS-2",$v));

}

returnjoin("",$ar);

}

functionphpunescape($source)

{

$decodedStr="";

$pos=0;

$len=strlen($source);

while($pos<$len)

{

$charAt=substr($source,$pos,1);

if($charAt=='%')

{

$pos++;

$charAt=substr($source,$pos,1);

if($charAt=='u')

{

// we got a unicode character

$pos++;

$unicodeHexVal=substr($source,$pos,4);

$unicode=hexdec($unicodeHexVal);

$entity="&#".$unicode.';';

$decodedStr.=utf8_encode($entity);

$pos+=4;

}else{

// we have an escaped ascii character

$hexVal=substr($source,$pos,2);

$decodedStr.=chr(hexdec($hexVal));

$pos+=2;

}

}else{

$decodedStr.=$charAt;

$pos++;

}

}

return$decodedStr;

}

 

 

functionunescape($str)

{

$str=rawurldecode($str);

preg_match_all("/(?:%u.{4})|&#x.{4};|&#d+;|.+/U",$str,$r);

$ar=$r[0];

#print_r($ar);

foreach($aras$k=>$v)

{

if(substr($v,0,2)=="%u")

$ar[$k]=iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));

elseif(substr($v,0,3)=="")

$ar[$k]=iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));

elseif(substr($v,0,2)=="")

{

//echo substr($v,2,-1)."";

$ar[$k]=iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));

}

}

returnjoin("",$ar);

}

 

?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/955836.htmlTechArticlePHP实现Javascript中的escape及unescape函数代码分享 这篇文章主要介绍了PHP实现Javascript中的escape及unescape函数代码分享,本文给出两个实现版本,需...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn