parse_str()
함수 사용법
parse_str()
함수는
URL에서 사용할 수 있는 형식으로 인코딩된 쿼리 문자열을 디코딩하여 변수로 구문 분석하는데 사용하는 함수입니다.
주로 http_build_query()
함수로 인코딩 된 쿼리 문자열을 디코딩하여 변수로 구문 분석하는데 사용합니다.
$data = array(
'name' => 'John Doe',
'age' => 30,
'city' => 'New York'
);
$queryString = http_build_query($data);
echo '인코딩된 URL 문자열: ' . $queryString . '<br>';
// 출력: 인코딩된 URL 문자열: name=John+Doe&age=30&city=New+York
// parse_str() 함수를 사용하여 디코딩
parse_str($queryString, $decodedArray);
// 디코딩된 결과를 출력
echo '디코딩된 배열: ';
print_r($decodedArray);
// 출력: 디코딩된 배열: Array ( [name] => John Doe [age] => 30 [city] => New York )
http_build_query()
함수는
배열 또는 객체를 URL에서 사용할 수 있는 형식으로 인코딩하여 쿼리 문자열을 생성하는 함수입니다.
parse_str()
함수는 URL에서 사용할 수 있는 형식으로 인코딩된 쿼리 문자열을 디코딩하여 변수로 구문 분석하는데 사용하는 함수입니다. 주로 http_build_query()
함수로 인코딩된 URL 쿼리를 디코딩합니다. http_build_query()
함수는 주로 배열을 URL 쿼리 문자열로 변환할 때 사용되며, parse_str()
함수는 디코딩하는 역할을 합니다.
parse_str()
함수는 http_build_query()
함수로 인코딩된 URL 쿼리 문자열을 디코딩하여 키-값 쌍으로 변환하고, 이를 배열 또는 변수에 할당합니다.
따라서, parse_str()
함수와 http_build_query()
함수는 서로 반대되는 역할을 수행한다고 할 수 있습니다.
parse_str()
함수의 형식은 다음과 같습니다.
구문
parse_str(string $string, array &$result): void
매개변수
$string
디코딩할 문자열입니다.
&$result
참조 변수입니다. 이 매개변수를 설정하면 디코딩된 키-값 쌍이 저장될 배열입니다.
PHP 7.2부터 매개변수가 없으면 parse_str()
함수를 사용하는 것이 권장되지 않습니다. 이는 이 방식의 사용이 보안상 위험할 수 있기 때문입니다. 악의적인 사용자가 URL 인코딩된 쿼리 문자열에 삽입한 코드가 실행될 수 있습니다.
더욱이, PHP 8.0.0 버전부터는 &$result
매개변수가 필수로 지정되어야 하므로, 이 함수를 사용할 때 반드시 &$result
매개변수를 제공해야 합니다.
주의하세요!
두 번째 매개변수를 사용하지 않고 이 함수를 사용하는 것은 매우 권장되지 않으며, PHP 7.2 버전부터는 비권장(DISCOURAGED)되며, PHP 8.0.0 버전부터는 두 번째 매개변수 &$result
가 필수입니다.
PHP 버전 | 설명 |
---|---|
8.0.0 | &$result 매개변수는 더 이상 옵션이 아니라 필수 매개변수입니다. |
7.2.0 | 두 번째 매개변수 없이 parse_str() 를 사용하는 경우 E_DEPRECATED 알림을 발생시킵니다. |
반환 값
반환 값이 없습니다.
사용 예시
$query_string = 'name=John+Doe&age=30';
// 권장 방법: URL 쿼리 문자열을 해석하여 변수에 저장
parse_str($query_string, $parsed_data);
// "name"과 "age" 변수에서 값을 추출하여 출력
$name = $parsed_data['name'];
$age = $parsed_data['age'];
// 결과 출력
echo '이름 (권장 방법): ' . $name . '<br>'; // 출력: 이름 (권장 방법): John Doe
echo '나이 (권장 방법): ' . $age . '<br>'; // 출력: 나이 (권장 방법): 30
// 비권장 방법: 변수를 직접 생성하여 값 할당
parse_str($query_string); // PHP 7.2.0 버전부터 E_DEPRECATED 알림이 발생, PHP 8.0.0 버전부터는 result 매개변수가 필수
echo '이름 (비권장 방법): ' . $name . '<br>'; // 출력: 이름 (비권장 방법): John Doe
echo '나이 (비권장 방법): ' . $age; // 출력: 나이 (비권장 방법): 30
이 예제에서는 권장된 방법과 비권장된 방법 두 가지를 모두 보여주고 있습니다. 권장된 방법은 parse_str()
함수의 결과를 $parsed_data
배열에 저장하여 사용하는 것이며, 비권장된 방법은 parse_str()
함수를 사용하여 변수를 직접 생성하고 값을 할당하는 방법입니다. 권장된 방법을 사용하는 것이 안전하고 가독성이 더 좋습니다.
같이 보기
- PHP urlencode() 함수 – 문자열을 URL 인코딩
- PHP rawurlencode() 함수 – RFC 3986에 따른 URL 인코딩
- PHP http_build_query() 함수 – 배열 또는 객체를 URL 인코딩하여 쿼리 문자열 생성
- PHP urlencode()로 인코딩된 URL 디코딩 – urldecode() 함수
- PHP rawurlencode()로 인코딩된 URL 디코딩 – rawurldecode() 함수
- PHP URL 인코딩 함수 비교
- PHP URL 디코딩 함수 비교
- PHP preg_split() 함수 - 개념 정리 및 사용 예제
- PHP parse_url() 함수 - URL 구성 요소 분석