PHP中获取GET POST参数,如何忽略大小写

2014-01-23 18:50:33
在PHP中,获取客户端传过来的数据通常保存在$_GET、$_POST全局数组中, 我们知道PHP中是区分大小写的,对于参数也不例外,那么,我们怎么忽略参数的大小写呢?
一、问题

在PHP中,获取客户端传过来的数据通常保存在$_GET、$_POST全局数组中,
如果你用http get方式提交,就保存在$_GET数组中,如果用http post方式提交,就保存在$_POST数组中。

比如 http://www.hutuseng.com/login.php?username=bobby&password=123

那我们在PHP中,可以这样获得用户名和密码,

$username = $_GET['username'];
$password = $_GET['password'];

但是,我们知道PHP中是区分大小写的,对于参数也不例外,
比如通过 $_GET['UserName'] 是获取不到用户名的。

那么,我们怎么忽略参数的大小写呢?


二、解决办法

思路比较简单, 就是我们可以将$_GET $_POST数组的key值都统一转换成大写或者小写,
代码如下:
function _get($key,$default=""){
	$key_lower  = strtolower($key);
	$_GET_lower = array_change_key_case($_GET,CASE_LOWER);
	if(isset($_GET_lower[$key_lower])){
		return $_GET_lower[$key_lower];
	}
	return $default;
}

$username = _get('UserName');


这里,我是新建了一个$_GET_lower数组,当然如果你愿意,也可以覆盖原来的$_GET数组
通过这种方式,不管客户端传过来的是username、userName 还是 uSERname,
服务器不管是 _get('UserName') 、_get('userNAME') 还是 _get('uSERNaMe') 都可以获得。