84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
AJAX를 통해 양식 필드의 내용을 PHP 스크립트에 게시하고 JavaScript의 이스케이프(field_contents)를 사용하여 이스케이프하고 있습니다. 문제는 모든 더하기 기호가 제거되고 공백으로 대체된다는 것입니다. 더하기 기호를 안전하게 "인코딩"하고 PHP 측에서 적절하게 "디코딩"하려면 어떻게 해야 합니까?
在JS中使用encodeURIComponent(),在PHP中你应该能够正确接收到值。
注意:当你在PHP中访问$_GET、$_POST或$_REQUEST时,你获取到的是已经解码过的值。
例子
在你的JS中:
// 对字符串进行URL编码 var string = encodeURIComponent('+'); // "%2B" // 发送到服务器 window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B
在你的服务器端:
echo $_GET['string']; // "+"
只有原始的HTTP请求包含了URL编码的数据。对于GET请求,你可以从URI中获取。$_SERVER['REQUEST_URI']或$_SERVER['QUERY_STRING']。对于URL编码的POST请求,可以使用file_get_contents('php://stdin')。
注意:
decode()只适用于单字节编码字符。对于完整的UTF-8范围,它将无效。
例如:
text = "\u0100"; // Ā // 错误的方式 escape(text); // %u0100 // 正确的方式 encodeURIComponent(text); // "%C4%80"
注意:"%C4%80"等同于:escape('\xc4\x80')
'\xc4\x80'是UTF-8中表示Ā的字节序列。因此,如果你使用encodeURIComponent(),你的服务器端必须知道它正在接收UTF-8编码。否则,PHP将破坏编码。在JavaScript中尝试:
encodeURIComponent()
在PHP中使用:
urldecode($_POST['field']);
在JS中使用encodeURIComponent(),在PHP中你应该能够正确接收到值。
注意:当你在PHP中访问$_GET、$_POST或$_REQUEST时,你获取到的是已经解码过的值。
例子
在你的JS中:
在你的服务器端:
只有原始的HTTP请求包含了URL编码的数据。
对于GET请求,你可以从URI中获取。$_SERVER['REQUEST_URI']或$_SERVER['QUERY_STRING']。对于URL编码的POST请求,可以使用file_get_contents('php://stdin')。
注意:
decode()只适用于单字节编码字符。对于完整的UTF-8范围,它将无效。
例如:
注意:"%C4%80"等同于:escape('\xc4\x80')
'\xc4\x80'是UTF-8中表示Ā的字节序列。因此,如果你使用encodeURIComponent(),你的服务器端必须知道它正在接收UTF-8编码。否则,PHP将破坏编码。
在JavaScript中尝试:
在PHP中使用: