当前位置: 首页 > 后端技术 > PHP

JavaScript中的encodeURI组件,对应PHP的编码方式

时间:2023-03-29 18:20:45 PHP

,在通过get方式传递一些特殊字符时,无法正确处理。比如#字符在浏览器的处理中会变成注释,使php端无法正确获取参数。这时候js会对传入的参数进行encode。我在工作中遇到过这样一个需求:1、首页有两个搜索页面2、首页有一个快速搜索框,点击搜索打开一个新的搜索页面,自动填写参数进行搜索3.搜索页面支持从首页填写不同的是不是有意搜索和自己页面填写参数的搜索功能。4.如果没有登录搜索,需要登录后在url中记录搜索参数。如果没有登录,首页搜索参数传递过程如下:->首页输入框填写在参数X中(encodeURIComponent()对参数进行encodeURIComponent()编码同参数进行编码)->PHP判断未登录,记录查询参数(需要写在url中)->登录后跳转到搜索页面,并且可以阅读下面encodeURIComponent()中对相同参数进行编码的问题,大致概括如下:js对参数进行编码后传给php,php需要和js一样的编码方式,再传回给js。需要统一js和PHP的字符串编码。JavaScriptencodeURIComponent()函数encodeURIComponent()函数将字符串编码为URI组件。PHP的以下方法与JSencodeURIComponent()编码一致:functionencodeURIComponent($str){$revert=array('%21'=>'!','%2A'=>'*','%27'=>"'",'%28'=>'(','%29'=>')');returnstrtr(rawurlencode($str),$revert);}这样就可以实现js编码和PHP编码的一致性。