2010-11-18 63 views
20

如何接受大小写不敏感的GETPOST值?PHP:不区分大小写参数

sample.php?OrderBy=asc仍然是相同的sample.php?orderby=ascsample.php?ORDERBY=asc

有效率地实现上述的手段?

+0

不确定是否有很好的解决方案,但是我遇到了这样一个问题,即散列密码变得较低并且无法使用;所以要小心,我建议你首先看看为什么会发生这种情况;通常在从HTTP转换为HTTPS(或返回)时,URL会变得较低。 – BeemerGuy 2010-11-18 03:32:02

+2

改变大小写的原因是什么? – zerkms 2010-11-18 03:32:43

+2

well im正在开发一个API,其中系统先前为使用大写字母的其他API客户端提供服务,最近我们对API进行了一些更改,包括确定采用较小的参数。所以为了保持与以前的API用户的向后兼容性,我面临着这样的问题。 – VeeBee 2010-11-18 03:40:38

回答

42

您可以使用array_change_key_case()创建$_GET的副本,其中包含全部大写或全部小写字母的键。

$_GET_lower = array_change_key_case($_GET, CASE_LOWER); 
$orderby = isset($_GET_lower['orderby']) ? $_GET_lower['orderby'] : 'asc'; 
echo $orderby; 

(我说“创建副本”,只是因为我不喜欢污染原超全局变量,但它是你的选择,如果你想覆盖它们。)

对于这个问题,它会仍然会更好,如果你只是坚持区分大小写匹配,因为它可能会更容易在搜索引擎和人眼,以及更容易在您的代码... 编辑:好吧,根据您的意见,我可以看到为什么你我想做这样的事情。

+0

改变个案的理由是什么? – zerkms 2010-11-18 03:32:04

+0

当使用VBA的Shell命令启动默认Web浏览器时,如果浏览器是Windows 10 Edge浏览器,我会将URL神奇地更改为全部小写。但不是在所有的Windows 10电脑上,只有一些。 – user3142056 2018-01-23 20:25:16