我对$_GET
var。
这是我的代码:
if(isset($_GET['offer'])) {
$params = array();
$params['wifi'] = "%wifi%";
$params['publisher'] = "%pubid%";
$params['framework'] = "%framework%";
$params['date'] = "%cachebuster%";
foreach($params as $key=>$param){
$array[$_GET[$key]] = $_GET[$key];
}
print_r($array);
}
这是我得到的奇怪输出:
Array ( [%wifi%] => %wifi% [%pubid%] => %pubid% [%framework%] => %framework% [Êchebuster%] => Êchebuster% )
为什么%cachebuster%
会变成Êchebuster%
?
答案 0 :(得分:7)
网址中的百分号会转义特殊字符。该网址似乎被解释为ISO 8869-I,在该字符集中,ca
是Ê
的代码。
您应该将网址更改为%
正确转义%25
:
答案 1 :(得分:4)
因为%ca
是Ê(0xCA)的网址编码形式
%
应编码为%25
。
有趣的是%wifi%
有效...我原以为它会为此返回400 Bad Request
...
答案 2 :(得分:0)
在处理“%”字符时,我们应该使用php函数
//should be used for encoding URL
urlencode()
//should be used for decoding URL
urldecode()
在以下链接中查看php文档: http://php.net/manual/en/function.urlencode.php