현재 위치: > 최신 기사 목록> parse_url에서 각 반환 필드의 의미를 구문 분석하십시오

parse_url에서 각 반환 필드의 의미를 구문 분석하십시오

gitbox 2025-05-26

PHP 개발에서는 종종 도메인 이름, 경로, 쿼리 매개 변수 및 기타 정보를 전체 주소에서 추출하는 것과 같은 URL을 처리해야합니다. parse_url () 은 PHP가 제공하는 매우 실용적인 기능으로, 이러한 작업을 빠르고 정확하게 완료하는 데 도움이 될 수 있습니다. 그러나 많은 개발자들이 함수에 의해 반환 된 각 필드의 의미를 이해하지 못하므로 실제로 사용하면 오해 나 오류가 발생합니다. 이 기사는 Parse_url () 의 반환 결과를 체계적으로 구문 분석하여 사용량을 진정으로 마스터하는 데 도움이됩니다.

1. parse_url () 함수의 기본 사용

parse_url () 의 함수 정의는 다음과 같습니다.

 mixed parse_url(string $url, int $component = -1)

URL 문자열을 입력으로 수신하고 URL의 다양한 구성 요소를 포함하는 연관 배열을 반환합니다. 두 번째 매개 변수 $ 구성 요소 는 선택 사항입니다. 이 매개 변수가 지정되면 함수는 URL의 해당 부분의 값 만 반환합니다.

먼저 가장 간단한 예를 살펴 보겠습니다.

 $url = 'https://user:[email protected]:8080/path/to/page.php?query=123#section';
$parsed = parse_url($url);
print_r($parsed);

출력 결과는 다음과 같습니다.

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [port] => 8080
    [user] => user
    [pass] => pass
    [path] => /path/to/page.php
    [query] => query=123
    [fragment] => section
)

2. 각 필드의 의미에 대한 자세한 설명

이 배열의 각 필드의 의미를 하나씩 구문 분석하겠습니다.

1. 계획

이것은 http , https , ftp 등과 같은 URL의 프로토콜 부분입니다. 예에서는 다음과 같습니다.

 [scheme] => https

URL은 HTTPS 프로토콜을 사용 함을 나타냅니다.

2. 호스트

즉, 호스트 이름, 일반적으로 도메인 이름 또는 IP 주소입니다. 예에서 :

 [host] => gitbox.net

이것은 우리가 액세스하려는 서버 주소입니다.

3. 포트

이것은 연결의 포트 번호입니다. 포트가 URL에 명시 적으로 지정되지 않은 경우 결과에 필드가 나타나지 않습니다. 예를 들어, 기본 HTTP 포트는 80이고 HTTPS는 443입니다. 비 디펜트 포트를 사용하지 않으면 구문 분석됩니다.

 [port] => 8080

이것은 우리가 포트 8080을 통해 액세스했음을 보여줍니다.

4. 사용자패스

이 두 필드는 기본 인증에 사용되는 사용자 이름과 비밀번호를 나타냅니다. 일반적으로 https : // user : pass@host 와 같은 URL에 나타납니다. 예에서 :

 [user] => user
[pass] => pass

참고 : 실제 프로덕션 환경의 URL 일반 텍스트에서 사용자 이름과 비밀번호를 전송하는 것이 좋습니다.

5. 경로

이것은 웹 사이트의 페이지 또는 인터페이스 경로와 같은 URL의 리소스의 경로 부분입니다.

 [path] => /path/to/page.php

이 필드는 종종 라우팅, 권한 제어 또는 정적 리소스 액세스에 사용됩니다.

6. 쿼리

즉, 물음표 뒤에 쿼리 문자열 부분은 일반적으로 매개 변수를 전달하는 데 사용됩니다.

 [query] => query=123

여기에 구문 분석되지 않은 원래 문자열이 반환됩니다. 추가 처리가 필요한 경우 parse_str () 함수를 사용하여 배열로 변환 할 수 있습니다.

 parse_str($parsed['query'], $queryParams);
print_r($queryParams);

산출:

 Array
(
    [query] => 123
)

7. 조각

이것은 URL의 앵커 부분, 즉 # 이후의 컨텐츠이며, 일반적으로 페이지 내에서 점프하는 데 사용됩니다.

 [fragment] => section

브라우저에서 서버로 전송되지 않으며 주로 클라이언트 페이지 제어에 사용됩니다.

3. 두 번째 매개 변수를 사용하여 순서의 일부를 추출하십시오.

URL의 특정 필드에만 관심이있는 경우 두 번째 매개 변수를 사용하여 필드 상수를 지정할 수 있습니다.

 $host = parse_url($url, PHP_URL_HOST);
echo $host; // 산출:gitbox.net

사용 가능한 상수는 다음과 같습니다.

  • php_url_scheme

  • php_url_host

  • php_url_port

  • php_url_user

  • php_url_pass

  • php_url_path

  • php_url_query

  • php_url_fragment

4. 예방 조치와 일반적인 문제

  1. 불완전한 URL : parse_url () 은 들어오는 URL이 완료되어야합니다. 또한 /path/to/page.php?query=123 과 같은 상대 주소를 처리 할 수 ​​있지만 해당 필드가 누락 될 수 있습니다.

  2. 반환 값은 False : 전달 된 문자열을 유효한 URL로 구문 분석 할 수없는 경우 함수는 False를 반환하고 결함 허용에주의를 기울여야합니다.

  3. 유니 코드 도메인 이름 : 중국어 또는 기타 유니 코드 문자를 포함하는 URL의 경우 먼저 변환 인코딩을 위해 IDN_TO_ASCII ()를 사용하는 것이 좋습니다.

요약

Parse_url ()은 URL을 처리하기위한 PHP에서 필수 도구입니다. 반환하는 각 필드의 의미를 이해하면 URL 관련 개발 작업을보다 효율적으로 완료하는 데 도움이 될 수 있습니다. 라우팅 시스템을 작성하거나 점프 링크 처리 또는 API 요청 분석을 수행하든 중요한 역할을 할 수 있습니다. 기억하십시오 : parse_url ()parse_str () 와 합리적으로 일치하면 모든 URL을 쉽게 "분해"할 수 있습니다.