2010-06-02 2 views
0

매개 변수를 가져 오는 API Listener 스크립트가 있습니다. 하지만 사용자가 매개 변수에 대소 문자가 혼합 된 변수 이름을 전달하는 경향이있는 것 같습니다. 나는에 쿼리 문자열을 처리 한 후 변수 이름처럼 소문자로 여전히 대문자와 소문자를 구별하지 않고로 또는 오히려 해석됩니다 같은 방법으로 flixible로 내 청취자가 필요PHP 변수 이름을 소문자로 변환 하시겠습니까?

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

: 예를 들어

일부 함수는 모두 하위 사례 변수로 반환됩니다.

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

아무도이 문제에 대해 밝힐 수 있습니까?

* 많은 의견 부탁드립니다. 감사!

답변

3

이 트릭을 수행해야합니다 귀하의 경우 그래서

$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에 삽입 할 수 있습니다. 예를 들어,

: 글로벌 변수 ($ _GET, $ _POST) 필요한 경우에

+0

위대한! 그것은 정말로 그것을했다! 감사합니다 !!! ü – VeeBee

1

적용 귀하의 경우 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를 사용하여이 선호 참고.

+0

값 중 하나를 "덮어 쓴"해야합니다, 당신은 방금 전에 모든 사람을 제외한 모든 사람을 제거하기로 결정했습니다. PHP의 $ _GET 기본값은 "last one stands"입니다. 예를 들어? test = 1 & test = 2 $ _GET [ "test"] === 2. –

+0

사실입니다. 이 함수는'? test = 1 & TEST = 1'의 경우에만 그것을 보존해야한다; 그럼에도 불구하고, 나는 그것을 테스트하지 않았으므로이 경우의 행동에 대해서는 확실하지 않습니다. – phsource

관련 문제