php的escape函数用法示例
内容摘要
这篇文章主要为大家详细介绍了php的escape函数用法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!采用js对URL中的汉字进行e
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!采用js对URL中的汉字进行e
文章正文
这篇文章主要为大家详细介绍了php的escape函数用法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
采用js对URL中的汉字进行escape编码。 <a href="" onclick="window.open('product_list.php?p_sort='+escape('php教程'));">这样点击链接后的效时:引用:http://127.0.0.1/shop/product_list.php?p_sort=PHP%u5F00%u53D1%u8D44%u6E90%u7F51生成了这样的效果, 很明显用PHP的urldecode()或者base64_decode()是无法反解的。解决方法, 用PHP写一个反解函数:代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <code> function js_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 ;} </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <code> function phpescape( $str ) { $sublen = strlen ( $str ); $retrunString = "" ; for ( $i =0; $i < $sublen ; $i ++) { if (ord( $str [ $i ])>=127) { $tmpString =bin2hex(iconv( "gb2312" , "ucs-2" , substr ( $str , $i ,2))); //$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下可能要打开此项 $retrunString .= "%u" . $tmpString ; $i ++; } else { $retrunString .= "%" . dechex (ord( $str [ $i ])); } } return $retrunString ; } </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | <code> function phpEscape( $str ) { preg_match_all( "/[\x80-\xff].|[\x01-\x7f]+/" , $str , $r ); $ar = $r [0]; foreach ( $ar as $k => $v ) { if (ord( $v [0]) < 128) $ar [ $k ] = rawurlencode( $v ); else $ar [ $k ] = "%u" .bin2hex(iconv( "GB2312" , "UCS-2" , $v )); } return join( "" , $ar ); } </code> |
代码如下:
1 2 3 4 5 6 7 8 | <code> $ar = $r [0]; //$r[0]里存放是匹配到的数组 foreach ( $ar as $k => $v ) { if (ord( $v [0]) < 128) //假如字符编码值小于128,说明是个英文字符 $ar [ $k ] = rawurlencode( $v ); //直接用rawurlencode编码 else $ar [ $k ] = "%u" .bin2hex(iconv( "GB2312" , "UCS-2" , $v )); //否则的话用iconv函数把汉字转变成ucs-2编码,也就是unicode编码 } </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <code> function unescape( $str ) { $str = rawurldecode( $str ); preg_match_all( "/%u.{4}|&#x.{4};|&#\d+;|.+/U" , $str , $r ); $ar = $r [0]; foreach ( $ar as $k => $v ) { if ( substr ( $v ,0,2) == "%u" ) $ar [ $k ] = iconv( "UCS-2" , "GBK" ,pack( "H4" , substr ( $v ,-4))); elseif ( substr ( $v ,0,3) == "&#x" ) $ar [ $k ] = iconv( "UCS-2" , "GBK" ,pack( "H4" , substr ( $v ,3,-1))); elseif ( substr ( $v ,0,2) == "&#" ) { $ar [ $k ] = iconv( "UCS-2" , "GBK" ,pack( "n" , substr ( $v ,2,-1))); } } return join( "" , $ar ); } </code> |
注:关于php的escape函数用法示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释