현재 위치: > 최신 기사 목록> parse_url + http_build_query로 URL 매개 변수를 수정하는 방법

parse_url + http_build_query로 URL 매개 변수를 수정하는 방법

gitbox 2025-05-28

웹 응용 프로그램을 개발할 때 URL 매개 변수 관리가 매우 일반적인 요구 사항입니다. 새 매개 변수를 추가하거나 기존 매개 변수를 수정하거나 특정 매개 변수를 삭제해야 할 수도 있습니다. php에서 parse_url ()http_build_query () 는 이러한 작업을 쉽게 완료하는 데 도움이되는 두 가지 매우 실용적인 기능입니다.

이 기사에서는 parse_url ()을 사용하여 URL을 분해 한 다음 parse_str ()http_build_query ()를 사용하여 매개 변수를 수정하고 마지막 URL을 재구성하는 방법을 소개합니다.

1. 구문 분석 URL

parse_url ()는 스키마 (프로토콜), 호스트 (호스트), 경로 (경로), 쿼리 (쿼리 문자열) 등과 같은 여러 부분으로 URL을 분해 할 수 있습니다.

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

산출:

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

2. 쿼리 매개 변수 분석

쿼리 매개 변수를 수정하려면 먼저 쿼리 부분을 연관 배열로 구문 분석해야합니다. parse_str ()를 사용할 수 있습니다.

 parse_str($parts['query'], $queryParams);

이 시점에서 $ queryparams는 다음과 같습니다.

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

3. 매개 변수를 수정하십시오

일반 배열 작동과 같은 매개 변수를 작동 할 수 있습니다.

 $queryParams['page'] = 3;         // 매개 변수를 수정하십시오
$queryParams['lang'] = 'zh';      // 매개 변수를 추가하십시오
unset($queryParams['q']);         // 매개 변수를 삭제합니다

4. 쿼리 문자열을 재구성하십시오

http_build_query ()를 사용하여 매개 변수 배열을 문자열로 다시 돌립니다.

 $newQuery = http_build_query($queryParams);

그런 다음 새 쿼리 문자열을 원래 URL로 다시 연결하십시오.

 $newUrl = $parts['scheme'] . '://' . $parts['host'] . $parts['path'] . '?' . $newQuery;
echo $newUrl;

산출:

 https://gitbox.net/search?page=3&lang=zh

V. 완전한 예

다음은 원래 URL과 수정할 매개 변수를 전달할 수있는 완전한 기능이며 수정 된 URL을 반환합니다.

 function modify_url_params($url, $modifications = [], $remove = []) {
    $parts = parse_url($url);

    parse_str($parts['query'] ?? '', $queryParams);

    // 수정을 적용하십시오
    foreach ($modifications as $key => $value) {
        $queryParams[$key] = $value;
    }

    // 매개 변수를 삭제합니다
    foreach ($remove as $key) {
        unset($queryParams[$key]);
    }

    $newQuery = http_build_query($queryParams);

    $newUrl = $parts['scheme'] . '://' . $parts['host'];
    if (isset($parts['path'])) {
        $newUrl .= $parts['path'];
    }
    if ($newQuery) {
        $newUrl .= '?' . $newQuery;
    }

    return $newUrl;
}

// 샘플 통화
$originalUrl = "https://gitbox.net/search?q=php&page=2";
$newUrl = modify_url_params($originalUrl, ['page' => 1, 'lang' => 'zh'], ['q']);
echo $newUrl;

산출:

 https://gitbox.net/search?page=1&lang=zh

6. 요약

parse_url () , parse_str ()http_build_query ()를 결합하여 URL 쿼리 매개 변수를 유연하게 추가, 수정 및 삭제할 수 있습니다. 이 방법은 명확 할뿐만 아니라 리디렉션 링크 처리, 페이징 로직, 동적 필터링 조건 등과 같은 다양한 실용적인 시나리오에도 적합합니다. 이러한 기술을 마스터하면 URL을 처리 할 때 코드의 효율성과 유지 관리 가능성이 크게 향상됩니다.