php模拟js escape(unescape)函数整理
工作中一个项目使用了js escape编码传递参数php程序获取后需解码,同时某些特定链接也得编码,在网络上收集到了一些函数这里记录下[*]/**
[*] * 类js unescape函数,解码经过escape编码过的数据
[*] * @param $str
[*] */
[*]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;
[*]}
[*]/**
[*] * 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;
[*]}
页:
[1]