如何使用PHP实现javascript的escape和unescape函数

前端之家收集整理的这篇文章主要介绍了如何使用PHP实现javascript的escape和unescape函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前端开发工程师都知道javascript有编码函数escape()和对应的解码函数unescape(),而PHP中只有个urlencode和urldecode,这个编码和解码函数对encodeURI和encodeURIComponent有效,但是对escape的是无效的。
javascript中的escape()函数和unescape()函数用户字符串编码,类似于PHP中的urlencode()函数,下面是PHP实现的escape函数代码
<div class="codetitle"><a style="CURSOR: pointer" data="33297" class="copybut" id="copybut33297" onclick="doCopy('code33297')"> 代码如下:

<div class="codebody" id="code33297">
/*
js escape PHP 实现
@param $string the sting want to be escaped
@param $in_encoding
@param $out_encoding
/
function escape($string,$in_encoding = 'UTF-8',$out_encoding = 'UCS-2') {
$return = '';
if (function_exists('mb_get_info')) {
for($x = 0; $x < mb_strlen ( $string,$in_encoding ); $x ++) {
$str = mb_substr ( $string,$x,1,$in_encoding );
if (strlen ( $str ) > 1) { // 多字节字符
$return .= '%u' . strtoupper ( bin2hex ( mb_convert_encoding ( $str,$out_encoding,$in_encoding ) ) );
} else {
$return .= '%' . strtoupper ( bin2hex ( $str ) );
}
}
}
return $return;
}

对应的解码PHP unescape代码是:
<div class="codetitle"><a style="CURSOR: pointer" data="25011" class="copybut" id="copybut25011" onclick="doCopy('code25011')"> 代码如下:
<div class="codebody" id="code25011">
function unescape($str)
{
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i ++)
{
if ($str[$i] == '%' && $str[$i + 1] == 'u')
{
$val = hexdec(substr($str,$i + 2,4));
if ($val < 0x7f)
$ret .= chr($val);
else
if ($val < 0x800)
$ret .= chr(0xc0 | ($val >> 6)) .
chr(0x80 | ($val & 0x3f));
else
$ret .= chr(0xe0 | ($val >> 12)) .
chr(0x80 | (($val >> 6) & 0x3f)) .
chr(0x80 | ($val & 0x3f));
$i += 5;
} else
if ($str[$i] == '%')
{
$ret .= urldecode(substr($str,$i,3));
$i += 2;
} else
$ret .= $str[$i];
}
return $ret;
}

猜你在找的PHP相关文章