PHP 응용 프로그램을 개발할 때 URL을 처리하는 것은 매우 일반적인 작업입니다. 라우팅 시스템을 구축하든 쿼리 매개 변수를 구축하든 두 가지 함수 parse_url () 및 parse_str ()를 사용하여 이해 및 합리적으로 URL의 구문 분석을 크게 단순화 할 수 있습니다. 이 기사는 예제를 사용하여 URL의 완전한 구문 분석 에서이 두 기능을 사용하여 구성 요소 및 쿼리 매개 변수를 추출하는 방법을 설명합니다.
parse_url () 는 URL 문자열을 구성 요소에 구문 분석하는 PHP 내장 기능입니다. 가능한 키가 포함 된 연관 배열을 반환합니다.
체계 : HTTP 또는 HTTPS와 같은 프로토콜
호스트 : gitbox.net과 같은 호스트 이름
포트 : 80 또는 443과 같은 포트 번호
사용자 : 사용자 이름
패스 : 비밀번호
경로 : 경로 부분
쿼리 : 쿼리 문자열 (즉, 물음 마크 이후의 부품 ? )
조각 : 앵커 포인트 (즉, 파운드 부호 # 이후의 부품)
예:
$url = 'https://user:[email protected]:8080/path/to/resource.php?user_id=123&token=abc#section2';
$parsedUrl = parse_url($url);
print_r($parsedUrl);
출력 결과는 비슷합니다.
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[user] => user
[pass] => pass
[path] => /path/to/resource.php
[query] => user_id=123&token=abc
[fragment] => section2
)
parse_str ()는 URL의 문자열을 연관 배열로 구문 분석하는 데 사용됩니다. 일반적으로 parse_url () 의 리턴 결과에서 쿼리 부분을 가져 와서 사용하기 위해 parse_str () 로 전달합니다.
예:
$queryString = $parsedUrl['query'];
parse_str($queryString, $queryParams);
print_r($queryParams);
출력 결과 :
Array
(
[user_id] => 123
[token] => abc
)
이 시점에서 $ QueryParams [ 'user_id'] 또는 $ QueryParams [ 'Token'] 와 같은 쉽게 액세스 할 수 있습니다.
코드 재사용 성을 향상시키기 위해 함수를 캡슐화하고 URL 문자열을 전달하며 모든 구성 요소 및 구문 분석 쿼리 매개 변수가 포함 된 완전한 정보를 반환 할 수 있습니다.
function parseFullUrl($url) {
$parsed = parse_url($url);
if (isset($parsed['query'])) {
parse_str($parsed['query'], $parsed['query_params']);
} else {
$parsed['query_params'] = [];
}
return $parsed;
}
// 예
$url = 'https://gitbox.net/search?lang=php&sort=desc';
$result = parseFullUrl($url);
print_r($result);
출력 결과 :
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /search
[query] => lang=php&sort=desc
[query_params] => Array
(
[lang] => php
[sort] => desc
)
)
라우팅 분석 : 경로 부분을 기반으로 호출 할 컨트롤러 및 메소드를 결정할 수 있습니다.
인터페이스 보안 : 확인을 위해 Query_Params 에서 토큰 또는 서명 필드를 추출하십시오.
페이지 점프 처리 : 참조자 또는 콜백 URL을 구문 분석하여 유효성 및 매개 변수 무결성을 확인하십시오.
parse_url ()은 URL의 정당성을 확인하지 않으며 분할 만 책임을집니다.
불완전하거나 기형 URL의 경우 일부 부품이 반환 결과에서 누락 될 수 있으며 판단해야합니다.
parse_str ()는 현재 스코프에서 변수를 덮어 쓰고 (두 번째 매개 변수가 전달되지 않은 경우), 잠재적 위험을 피하기 위해 항상 두 번째 매개 변수 양식을 사용하는 것이 좋습니다.
parse_url () 과 parse_str ()를 결합하면 URL의 포괄적 인 구문 분석을 쉽게 달성하고 프로토콜, 호스트, 경로, 쿼리 매개 변수 등과 같은 정보를 추출 할 수 있습니다. API 인터페이스 개발, 리디렉션 처리 또는 데이터 검증 수행에 관계 없이이 두 기능은 URL을 처리하기위한 강력한 도구입니다. 사용 능력은 PHP 개발에 더 높은 효율성과 명확한 논리 구조를 가져올 것입니다.