我有一个api监听器脚本,它接受get参数。但是当用户倾向于在参数上传递混合大小写变量名时,我似乎遇到了问题。
例如:
http://mylistenerurl.com?paramName1=Hello¶mname2=World
我需要我的监听器以这样的方式灵活处理,即变量名称将被解释为不区分大小写,或者更确切地说仍然是小写的,就像我在某个函数上处理查询字符串一样,它们都返回为低级的变量:
extract(someFunction($_GET));
process($paramname1, $paramname2);
有人可以对此有所了解吗?
*非常感谢。谢谢!
答案 0 :(得分:4)
这应该可以解决问题:
$array_of_lower_case_strings = array_map( "strtolower", array( "This Will Be ALL lowercase.", ... ) );
所以在你的情况下:
$get_with_lowercase_keys = array_combine(
array_map( "strtolower", array_keys( $_GET ) ),
array_values( $_GET )
);
我要提到的一件事是你应该非常小心extract
,因为它可以被利用来允许将意外的变量注入你的PHP。
答案 1 :(得分:1)
必要时应用于全局变量($ _GET,$ _POST):
e.g。在您的情况下setLowerCaseVars($_GET);
function setLowerCaseVars(&$global_var) {
foreach ($global_var as $key => &$value) {
if (!isset($global_var[strtolower($key)])) {
$global_var[strtolower($key)] = $value;
}
}
}
编辑:请注意,我更喜欢使用array_combine,因为它不会覆盖已经设置了小写变量的情况。