PHP:不区分大小写的参数

29

如何不区分大小写地接收传递的GETPOST值?

比如,sample.php?OrderBy=ascsample.php?orderby=ascsample.php?ORDERBY=asc 是相同的。

有没有高效地实现上述功能的方法?


我不确定有一个好的解决方案,但我遇到了这样的问题,在那里散列密码变成小写,并且无法使用它;所以要小心,我建议您查找为什么会发生这种情况;通常当从HTTP转换为HTTPS(或相反)时,URL会变成小写。 - BeemerGuy
2
改变大小写的原因是什么? - zerkms
3
我正在开发一个API,该系统之前为使用大写字母的其他API客户端提供服务。最近我们对API进行了一些更改,包括决定支持小写参数。因此,为了保持与先前API用户的向后兼容性,我面临这样的问题。 - VeeBee
1个回答

58

您可以使用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;
(我之所以说“创建一个副本”,只是因为我不喜欢污染原始的超全局变量,但如果你愿意,可以选择覆盖它们。)
就此而言,如果您坚持区分大小写的匹配,则对搜索引擎和人眼都更加友好,对您的代码也更加友好...编辑:好的,根据您的评论,我可以理解为什么您想要这样做。

改变大小写的原因是什么? - zerkms
1
通过VBA使用Shell命令启动默认的Web浏览器时,如果浏览器是Windows 10 Edge浏览器,则URL会神秘地更改为全部小写。但并非在所有Windows 10计算机上都会出现此问题,只有部分计算机会出现。 - user3142056
我一直在开发一个API,需要识别IDIdid是相同的... 感谢@BoltClock。 - RealSollyM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接