PHP实现javascript的escape和unescape函数
/** * 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实现javascript的unescape函数 * @param [type] $str [description] * @return [type] [description] */ 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; }
经过测试,这2个函数可用:使用javascript的 escape('你好')后,使用以上的unescape($_GET[‘test']),能够得到原参数值"你好"。
测试demo略,看官可自行测试。
---- 始终相信这句:
----“做每天该做的事,不计结果!”
---- 因爲對於編程還只是新手,對很多知識掌握的不牢靠,歡迎大家批評指正~~|=-=|~~
----“做每天该做的事,不计结果!”
---- 因爲對於編程還只是新手,對很多知識掌握的不牢靠,歡迎大家批評指正~~|=-=|~~