웹 응용 프로그램을 개발할 때 URL 매개 변수 관리가 매우 일반적인 요구 사항입니다. 새 매개 변수를 추가하거나 기존 매개 변수를 수정하거나 특정 매개 변수를 삭제해야 할 수도 있습니다. php에서 parse_url () 및 http_build_query () 는 이러한 작업을 쉽게 완료하는 데 도움이되는 두 가지 매우 실용적인 기능입니다.
이 기사에서는 parse_url ()을 사용하여 URL을 분해 한 다음 parse_str () 및 http_build_query ()를 사용하여 매개 변수를 수정하고 마지막 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
)
쿼리 매개 변수를 수정하려면 먼저 쿼리 부분을 연관 배열로 구문 분석해야합니다. parse_str ()를 사용할 수 있습니다.
parse_str($parts['query'], $queryParams);
이 시점에서 $ queryparams는 다음과 같습니다.
Array
(
[q] => php
[page] => 2
)
일반 배열 작동과 같은 매개 변수를 작동 할 수 있습니다.
$queryParams['page'] = 3; // 매개 변수를 수정하십시오
$queryParams['lang'] = 'zh'; // 매개 변수를 추가하십시오
unset($queryParams['q']); // 매개 변수를 삭제합니다
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
다음은 원래 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
parse_url () , parse_str () 및 http_build_query ()를 결합하여 URL 쿼리 매개 변수를 유연하게 추가, 수정 및 삭제할 수 있습니다. 이 방법은 명확 할뿐만 아니라 리디렉션 링크 처리, 페이징 로직, 동적 필터링 조건 등과 같은 다양한 실용적인 시나리오에도 적합합니다. 이러한 기술을 마스터하면 URL을 처리 할 때 코드의 효율성과 유지 관리 가능성이 크게 향상됩니다.