728x90
웹 개발을 하다 보면 URL 뒤에 붙는 ?key1=value1&key2=value2 형태의 쿼리 스트링(Query String)을 다룰 일이 많습니다.
예를 들어, 다른 페이지로 데이터를 전달하거나, API에 요청을 보낼 때 파라미터를 이 형태로 구성합니다.
parse_str() 함수는 URL의 쿼리 스트링과 같은 문자열을 PHP 변수나 배열로 분해해주는 함수입니다.
예제코드
<?php
$query_string = "name=John+Doe&age=30&city=Seoul";
// 1. 결과를 담을 빈 배열을 미리 선언합니다.
$params = [];
// 2. parse_str()의 두 번째 인자로 배열 변수를 넘겨줍니다.
parse_str($query_string, $params);
// 3. 이제 생성된 변수가 아닌, 배열의 키를 통해 값에 접근합니다.
echo $params['name'];
echo "<br>";
echo $params['age'];
echo "<br>";
echo $params['city'];
?>
방법은 현재 스코프(scope)에 $name, $age, $city라는 변수를 직접 생성합니다. 편리해 보이지만, 외부 입력(쿼리 스트링)에 따라 내 코드의 변수가 예기치 않게 덮어쓰일 수 있는 보안상 취약점을 만들 수 있어 권장되지 않습니다.
인자인 배열 변수를 사용하여 결과를 받는 것이 비교적 안전한 방법입니다.
예제코드
<?php
$query_string = "name=John+Doe&age=30&skills[]=PHP&skills[]=JavaScript";
$data = []; // 결과를 담을 빈 배열을 선언
parse_str($query_string, $data);
print_r($data);
?>
http_build_query(): 배열을 쿼리 스트링으로 생성해보기
parse_str()의 반대 역할을 합니다. PHP 배열(주로 연관 배열)을 URL 쿼리 스트링 형태로 변환합니다.
예제코
<?php
$params = [
'category' => 'books',
'sort' => 'newest',
'page' => 1
];
$query_string = http_build_query($params);
echo $query_string;
?>
활용 예제코드
<?php
$api_params = [
'api_key' => 'YOUR_API_KEY_HERE',
'keyword' => 'PHP 강좌',
'limit' => 20
];
// 배열을 쿼리 스트링으로 변환
$query_string = http_build_query($api_params);
// 최종 요청 URL
$request_url = $base_url . "?" . $query_string;
echo $request_url;
// 결과: https://api.example.com/search?api_key=YOUR_API_KEY_HERE&keyword=PHP+%EA%B0%95%EC%A2%8C&limit=20
?>
시연 화면
'PHP' 카테고리의 다른 글
[PHP] strpos(), strrpos()로 특정 문자의 위치 찾기 (1) | 2025.09.01 |
---|---|
[PHP] 일반 배열보다 빠르고 메모리를 적게 쓰는 SplFixedArray (0) | 2025.08.31 |
[PHP] range() + array_filter()로 짝수/홀수 필터링하기 (0) | 2025.08.24 |
[PHP] explode()와 implode()로 문자열을 배열로, 배열을 문자열로 변환하기 (0) | 2025.08.23 |
[PHP] 날짜 및 시간 객체 선언하여 다루기 (1) | 2025.08.10 |