前端开发工程师都知道javascript有编码函数escape()和对应的解码函数unescape()而php中只有个urlencode和 urldecode这个编码和解码函数对encodeURI和encodeURIComponent有效但是对escape的是无效的
javascript中的escape()函数和unescape()函数用户字符串编码类似于PHP中的urlencode()函数下面是php实现的escape函数代码
复制代码 代码如下:
/**
* js escape php 实现
* @param $string the sting want to be escaped
* @param $in_encoding
* @param $out_encoding
*/
function escape($string
$in_encoding =
UTF
$out_encoding =
UCS
) {
$return =
;
if (function_exists(
mb_get_info
)) {
for($x =
; $x < mb_strlen ( $string
$in_encoding ); $x ++) {
$str = mb_substr ( $string
$x
$in_encoding );
if (strlen ( $str ) >
) { // 多字节字符
$return
=
%u
strtoupper ( bin
hex ( mb_convert_encoding ( $str
$out_encoding
$in_encoding ) ) );
} else {
$return
=
%
strtoupper ( bin
hex ( $str ) );
}
}
}
return $return;
}
对应的解码php unescape代码是
复制代码 代码如下:
function unescape($str)
{
$ret =
;
$len = strlen($str);
for ($i =
; $i < $len; $i ++)
{
if ($str[$i] ==
%
&& $str[$i +
] ==
u
)
{
$val = hexdec(substr($str
$i +
));
if ($val <
x
f)
$ret
= chr($val);
else
if ($val <
x
)
$ret
= chr(
xc
| ($val >>
))
chr(
x
| ($val &
x
f));
else
$ret
= chr(
xe
| ($val >>
))
chr(
x
| (($val >>
) &
x
f))
chr(
x
| ($val &
x
f));
$i +=
;
} else
if ($str[$i] ==
%
)
{
$ret
= urldecode(substr($str
$i
));
$i +=
;
} else
$ret
= $str[$i];
}
return $ret;
}