escape函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** * 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 ; } |
unescape代码:
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 | 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 ; } |