• 技术文章 >后端开发 >php教程

    关于js和php对url编码的处理方法_PHP教程

    2016-07-13 10:37:09原创440

    解决办法: 采用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实现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;
    }

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/736804.htmlTechArticle解决办法: 采用js对URL中的汉字进行escape编码。 复制代码 代码如下: a href="" onclick="window.open('product_list.php?p_sort='+escape('PHP开发资源网'));"...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:js url 编码
    上一篇:PHP程序漏洞产生的原因分析与防范方法说明_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文解析PHP元转分的错误示范(附代码实例)• PHP+Socket系列之实现websocket聊天室• PHP+Socket系列之IO多路复用及实现web服务器• PHP+Socket系列之实现客户端与服务端数据传输• 一文详解PHP用流方式实现下载文件(附代码示例)
    1/1

    PHP中文网