JSURL编码PHP解码{%u5F00%u53D1}-创新互联-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

JSURL编码PHP解码{%u5F00%u53D1}-创新互联

这次第一次用smarttemplate这个模板,比smarty小巧了很多,但也有些不方便的地方。

成都创新互联服务项目包括沾益网站建设、沾益网站制作、沾益网页制作以及沾益网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,沾益网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到沾益省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

smarty可以直接对url进行编码, 比如

但在smarttemplate里面就好像没有,由于链接是由js提交的,而不是表单提交,所以不能自动编码。

解决办法: 采用js对URL中的汉字进行escape编码。

这样点击链接后的效时:

引用:http://127.0.0.1/shop/product_list.php?p_sort=PHP%u5F00%u53D1%u8D44%u6E90%u7F51

生成了这样的效果, 很明显用PHP的urldecode()或者base64_decode()是无法反解的。

解决方法, 用PHP写一个反解函数:

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编码会自动转换成为UTF-8, 所以必须进行编码转换才能得到正确的结果,否则会中文乱码。

代码如下:

print iconv('utf-8', 'gb2312', js_unescape($_REQUEST['p_sort']));

到此我们就成功地反解了js的escape编码了。

如下:

引用:PHP开发资源网

另外我找到个用PHP实现js的escape编码的函数:

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;

}

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前题目:JSURL编码PHP解码{%u5F00%u53D1}-创新互联
地址分享:http://kswsj.cn/article/cesgsi.html

其他资讯