Heim > Backend-Entwicklung > PHP-Tutorial > PHP实现Javascript中的escape及unescape函数代码分享_PHP教程

PHP实现Javascript中的escape及unescape函数代码分享_PHP教程

WBOY
Freigeben: 2016-07-13 10:07:28
Original
889 Leute haben es durchsucht

PHP实现Javascript中的escape及unescape函数代码分享

 这篇文章主要介绍了PHP实现Javascript中的escape及unescape函数代码分享,本文给出两个实现版本,需要的朋友可以参考下

 

 

这个类相当好用.作用么,PHP做JSON传递GBK字符,比如中文,日文,韩文神马的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

$c.=chr($val);

}elseif($val

$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);

}

 

}

?>

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

{

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])

$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

{

$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})|.{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函数代码分享,本文给出两个实现版本,需...
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage