熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

如何使用PHP實現javascript的escape和unescape函數

2013-11-15 12:23:39  來源: PHP編程 

  前端開發工程師都知道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 ( binhex ( mb_convert_encoding ( $str $out_encoding $in_encoding ) ) );
} else {
$return = % strtoupper ( binhex ( $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 < xf)
$ret = chr($val);
else
if ($val < x)
$ret = chr(xc | ($val >> ))
chr(x | ($val & xf));
else
$ret = chr(xe | ($val >> ))
chr(x | (($val >> ) & xf))
chr(x | ($val & xf));
$i += ;
} else
if ($str[$i] == %)
{
$ret = urldecode(substr($str $i ));
$i += ;
} else
$ret = $str[$i];
}
return $ret;
}
From:http://tw.wingwit.com/Article/program/PHP/201311/20860.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.