js encodeuricomponent php解码,JavaScript中的encodeURIcomponent,对应PHP的的编码方法

通过get方式传递某些特殊字符时,不能被正确的处理。比如#字符,在浏览器的处理中会变成注释,从而php端无法正确的拿到参数。

这个时候js会将传递的参数进行编码。

工作中遇到过这样一个需求:

1.有 首页 搜索页 两个页面

2.首页有个快捷搜索框,点击搜索可新打开搜索页并自动填入参数进行搜索

3.搜索页支持来自首页填入差不是故意的搜索和自身页面填入参数的搜索功能

4.若未登录的情况进行搜索,则登录后需要记录url中的搜索参数

未登录情况下首页搜索参数传递过程如下:

->首页输入框填入参数X(encodeURIComponent()编码一样的参数将参数编码)

->PHP判断未登录,记录查询参数(需要写到url中)

->登录完成后跳转到搜索页,并能读取到跟encodeURIComponent()编码一样的参数

问题大体概述为:

js把参数编码后传递给了php,需要php跟js一样的编码方式,在传递回js。需要js和PHP对字符串编码的统一。

JavaScript encodeURIComponent() 函数

encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。

PHP以下方法与JS encodeURIComponent() 编码一致:

function encodeURIComponent($str) {

$revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')');

return strtr(rawurlencode($str), $revert);

}

这样就可以实现js编码与PHP编码的一致性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值