经过 escape 转换的内容,怎么还原成造成文字??

#1 llo314

表单提交之后,内容变成了:%3Ch1%3Edgrdgrhy%3C%2Fh1%3E ,输出页面时,怎么还原成正常的 html ??

2012-07-23 03:12:59

#2 jake

用urldecode函数

http://cn.php.net/manual/zh/function.urldecode.php


2012-07-23 08:43:13

#3 改变命运2023

//解码为HTML实体字符UTF-8
                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;
调用这个方法,就可以将js 的escape后的数据反转回来

2012-07-23 14:44:02

#4 改变命运2023

调用该方法即可实现
//解码为HTML实体字符UTF-8
                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;

2012-07-23 14:49:02