현재 위치: > 최신 기사 목록> parse_url과 parse_str를 결합하여 완전한 URL을 분석합니다

parse_url과 parse_str를 결합하여 완전한 URL을 분석합니다

gitbox 2025-05-28

PHP 응용 프로그램을 개발할 때 URL을 처리하는 것은 매우 일반적인 작업입니다. 라우팅 시스템을 구축하든 쿼리 매개 변수를 구축하든 두 가지 함수 parse_url ()parse_str ()를 사용하여 이해 및 합리적으로 URL의 구문 분석을 크게 단순화 할 수 있습니다. 이 기사는 예제를 사용하여 URL의 완전한 구문 분석 에서이 두 기능을 사용하여 구성 요소 및 쿼리 매개 변수를 추출하는 방법을 설명합니다.

1. parse_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
)

2. parse_str ()를 사용하여 쿼리 문자열을 구문 분석하십시오

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'] 와 같은 쉽게 액세스 할 수 있습니다.

3. 완전한 포장 : 맞춤형 구문 분석 기능

코드 재사용 성을 향상시키기 위해 함수를 캡슐화하고 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
        )
)

4. 실제 시나리오의 예

  1. 라우팅 분석 : 경로 부분을 기반으로 호출 할 컨트롤러 및 메소드를 결정할 수 있습니다.

  2. 인터페이스 보안 : 확인을 위해 Query_Params 에서 토큰 또는 서명 필드를 추출하십시오.

  3. 페이지 점프 처리 : 참조자 또는 콜백 URL을 구문 분석하여 유효성 및 매개 변수 무결성을 확인하십시오.

5. 주목할만한 것들

  • parse_url ()은 URL의 정당성을 확인하지 않으며 분할 만 책임을집니다.

  • 불완전하거나 기형 URL의 경우 일부 부품이 반환 결과에서 누락 될 수 있으며 판단해야합니다.

  • parse_str ()는 현재 스코프에서 변수를 덮어 쓰고 (두 번째 매개 변수가 전달되지 않은 경우), 잠재적 위험을 피하기 위해 항상 두 번째 매개 변수 양식을 사용하는 것이 좋습니다.

요약

parse_url ()parse_str ()를 결합하면 URL의 포괄적 인 구문 분석을 쉽게 달성하고 프로토콜, 호스트, 경로, 쿼리 매개 변수 등과 같은 정보를 추출 할 수 있습니다. API 인터페이스 개발, 리디렉션 처리 또는 데이터 검증 수행에 관계 없이이 두 기능은 URL을 처리하기위한 강력한 도구입니다. 사용 능력은 PHP 개발에 더 높은 효율성과 명확한 논리 구조를 가져올 것입니다.