2013-03-30 2 views
0

나는 문자열 MySQL의 테이블에 저장이 같이 있습니다 PHP에서 쿼리 문자열을 변수로 변환하려면 어떻게해야합니까?

?name1=value1&name2=value2&name3=value3

원래이 데이터는 다른 스크립트로 GET 데이터를 전송하는 데 사용하는 거라고하지만 지금은 자신이 무엇을 위해 그것을 필요로 찾을 수 있습니다.

PHP에서 이러한 쌍을 변수 또는 배열로 바꾸기 위해 미리 정의 된 함수가 있습니까? 아니면 수동으로해야합니까?

답변

5

처음에는 물음표를 없애야하지만, PHP 함수 parse_str을 사용할 수 있습니다. 두 번째 배열 매개 변수없이 호출하면

  • 는 지역 변수로 현재 범위에 값을 기록한다 :

    $arr = array(); 
    parse_str($str, $arr); 
    print_r($arr); 
    

    이 기능은 매뉴얼 페이지에서 언급에 몇 가지주의 사항이 있습니다. 문자열에 프로그램에 이미있는 변수의 값을 변경할 수있는 키가 포함되어 있으면 위험 할 수 있습니다.

  • magic_quotes_gpc 설정은 쿼리 문자열과 urlencoded POST 본문을 디코딩하기 위해 PHP에서 내부적으로 사용하는 루틴이기 때문에이 함수의 작동 방식에 영향을줍니다. 아마

    function parseQueryString($queryString) { 
        $result = array(); 
        $pairs = explode("&", $queryString); 
        foreach ($pairs as $pair) { 
         $pairArr = split("=", $pair, 2); 
         $result[urldecode($pairArr[0])] = urldecode($pairArr[1]); 
        } 
        return $result; 
    } 
    

    이 솔루션 것입니다 : 당신이 magic_quotes_gpc 설정에 의해 영향을받지 않는 휴대용 솔루션을 필요로하는 경우

는이 값의 인코딩을 처리 할 수 ​​urldecode를 사용하여 수동으로 디코딩 기능을 작성하는 비교적 간단합니다 내장 된 parse_args 함수보다 약간 느리지 만 PHP 구성 방법에 관계없이 일관된 동작을 얻을 수 있습니다. 물론 처음부터 다시 ?을 제거해야합니다.이 예제는 두 예제에 포함되어 있지 않습니다.

1

Var_export 유용 할 수도 있습니다.

$arr=?name1=value1&name2=value2&name3=value3 
var_export($arr);