我有一个问题,PHP在POST和GET变量中用下划线替换所有空格。
例如,如果我有URL:http://localhost/proxy.php?user name=Max
,浏览器会将其转换为http://localhost/proxy.php?user%20name=Max
。
但是如果我给出$_GET参数,关键字不是user name
,而是user_name
(注意下划线)!
有没有可能改变这种行为?
发布于 2009-03-27 12:25:19
我认为获取所需参数的唯一可能方法是使用$_SERVER['QUERY_STRING']
自己解析它们
$a_pairs = explode('&', $_SERVER['QUERY_STRING']);
foreach($a_pairs AS $s_pair){
$a_pair = explode('=', $s_pair);
if(count($a_pair) == 1) $a_pair[1] = '';
$a_pair[0] = urldecode($a_pair[0]);
$a_pair[1] = urldecode($a_pair[1]);
$GLOBALS['_GET'][$a_pair[0]] = $a_pair[1];
$_GET[$a_pair[0]] = $a_pair[1];
}
发布于 2008-11-12 12:24:23
在过去疯狂的register_globals时代,查询字符串被PHP解压缩成全局变量,但变量标识符的格式是受约束的,因此空格显然不能工作。这个限制仍然存在,老实说,我认为保持这种方式是一个好主意。
如果您确实不能将URL中的空格转换为下划线,只需在处理请求时破坏$_GET数组,并将每个下划线替换为空格。
发布于 2008-11-12 12:20:21
据我所知,我从来没有在URL参数名中看到过空格...
我认为,最好将参数名称的所有空格都转换为"_“。
https://stackoverflow.com/questions/283751
复制相似问题