js前端URL特殊字符的转码及PHP解码

由 emer 发布

问题:url传有特殊字符出现丢失,因为特殊字符会被特殊处理
我们先用getUrlParam()函数获取参数,

// 获取链接参数
function getUrlParam(name) {
    //构造一个含有目标参数的正则表达式对象
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    //匹配目标参数
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null; //返回参数值
}

再用encodeURIComponent()函数转码,例如:

//url里边包含@等特殊字符
var url = "https://6.hbibwl.com.cn/wxkf/main.html?pin=U.P0Ky40vy63TnhM65rk@_B9&id=8";
var pin = encodeURIComponent(getUrlParam('pin'));
//打印转码的pin值
console.log(pin);

结果:

U.P0Ky40vy63TnhM65rk%40_B9

PHP解码:

$_POST['pin'] = urldecode($_POST['pin']);
echo $_POST['pin'];

结果:

U.P0Ky40vy63TnhM65rk@_B9

0条评论

发表评论


验证码