현재 위치: > 최신 기사 목록> parse_url 및 parse_str를 사용하여 쿼리 매개 변수 배열을 가져옵니다.

parse_url 및 parse_str를 사용하여 쿼리 매개 변수 배열을 가져옵니다.

gitbox 2025-05-26

매일 개발에서는 종종 인터페이스 개발, 웹 페이지 점프 또는 링크 해상도를 수행 할 때 URL의 매개 변수를 처리해야합니다. PHP 언어를 사용하는 경우 두 기능 Parse_urlParse_str는 URL을 처리하는 무기가됩니다.

이 기사에서는 parse_url 함수를 사용하여 URL에서 쿼리 부분을 추출한 다음 Parse_str 함수를 통해 PHP 배열로 변환하여 각 매개 변수 값에 쉽게 액세스하는 방법을 보여줍니다.

1. parse_url 기능 소개

parse_url은 URL을 구문 분석하여 다음을 포함하여 구성 요소로 분리 할 수있는 PHP의 내장 기능 중 하나입니다.

  • 체계 (프로토콜)

  • 호스트 (호스트 이름)

  • 포트 (포트)

  • 사용자 (사용자 이름)

  • 패스 (비밀번호)

  • 경로 (경로)

  • 쿼리 (쿼리 문자열)

  • 조각 (앵커 포인트)

예:

 $url = "https://gitbox.net/search?q=php&sort=desc&page=2";
$parsed = parse_url($url);

print_r($parsed);

출력 결과 :

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /search
    [query] => q=php&sort=desc&page=2
)

보시 다시피 Parse_url은 URL에서 쿼리 부분을 성공적으로 추출합니다. Q = PHP & SORT = DESC & PAGE = 2 . 그러나 이것은 여전히 ​​끈입니다. 접근 가능한 배열이 되려면 다른 함수 인 parse_str를 사용해야합니다.

2. parse_str 함수 소개

parse_str 는 또한 PHP의 내장 기능으로 URL의 쿼리 문자열을 연관 배열로 구문 분석 할 수 있습니다.

예:

 $queryString = "q=php&sort=desc&page=2";
parse_str($queryString, $queryArray);

print_r($queryArray);

출력 결과 :

 Array
(
    [q] => php
    [sort] => desc
    [page] => 2
)

각 매개 변수는 배열 요소가되었으므로 $ QueryArray [ 'Q'] 또는 2 ~ $ QueryArray [ 'Page'] 를 통해 쉽게 PHP를 얻을 수 있습니다.

3. 둘 다 결합하여 사용하십시오

두 기능을 함께 사용하면 최소한의 방식으로 모든 URL로 쿼리 매개 변수 배열을 얻을 수 있습니다.

 $url = "https://gitbox.net/search?q=php&sort=desc&page=2";

// 첫 번째 단계:사용 parse_url 얻다 query 부분
$parsedUrl = parse_url($url);
$queryString = isset($parsedUrl['query']) ? $parsedUrl['query'] : '';

// 2 단계:사용 parse_str 할 것이다 query 문자열을 배열로 변환합니다
$queryParams = [];
parse_str($queryString, $queryParams);

// 출력보기
print_r($queryParams);

이러한 방식으로 URL에 얼마나 많은 매개 변수가 포함되어 있더라도 $ QueryParams 배열을 통해 쉽게 액세스 할 수 있습니다.

4. 빈 쿼리를 처리하거나 쿼리가 없습니다

실제 시나리오에서는 URL에 쿼리 매개 변수가 전혀없는 경우에도 결함 공차를 수행해야합니다.

 $url = "https://gitbox.net/home";
$parsedUrl = parse_url($url);

$queryParams = [];
if (isset($parsedUrl['query'])) {
    parse_str($parsedUrl['query'], $queryParams);
}

print_r($queryParams); // 출력은 빈 배열입니다