PHP将变量名称转换为小写?

时间:2010-06-02 03:03:01

标签: php

我有一个api监听器脚本,它接受get参数。但是当用户倾向于在参数上传递混合大小写变量名时,我似乎遇到了问题。

例如:

http://mylistenerurl.com?paramName1=Hello&paramname2=World

我需要我的监听器以这样的方式灵活处理,即变量名称将被解释为不区分大小写,或者更确切地说仍然是小写的,就像我在某个函数上处理查询字符串一样,它们都返回为低级的变量:

extract(someFunction($_GET));
process($paramname1, $paramname2);

有人可以对此有所了解吗?

*非常感谢。谢谢!

2 个答案:

答案 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,因为它不会覆盖已经设置了小写变量的情况。