我通过AJAX将表单字段的内容发布到PHP脚本中,并使用JavaScript来转义(field\u contents)。问题是,任何加号都被去掉,代之以空格。如何安全地“编码”加号,然后在PHP端对其进行适当的“解码”
在JS和PHP中使用encodeURIComponent(),您应该会收到正确的值
注意:在PHP中访问$\u GET、$\u POST或$\u REQUEST时,您正在检索已解码的值
例如:
在您的JS中:
//url编码字符串
var string=encodeURIComponent(“+”);//“%2B”
//将其发送到您的服务器
window.location=http://example.com/?string=“+字符串;//http://example.com/?string=%2B
在您的服务器上:
echo$_GET['string'];//"+"
只有原始HTTP请求包含url编码的数据
对于GET请求,您可以从URI中检索它$_服务器['REQUEST\u URI']或$\u服务器['QUERY\u STRING']。对于URL编码的帖子,file\u get\u contents('php://stdin)
注意:
decode()仅适用于单字节编码字符。它不适用于整个UTF-8范围
例如:
text=“\u0100”//Ā
//不正确
转义(文本);//%u0100
//正确的
编码组件(文本);//%C4%80
注意:“%C4%80”相当于:转义('\xc4\x80')
这是表示UTF-8中的Ā的字节序列(\xc4\x80)。因此,如果使用encodeURIComponent()您的服务器端必须知道它正在接收UTF-8。否则PHP将破坏编码