PHP 개발에서는 종종 도메인 이름, 경로, 쿼리 매개 변수 및 기타 정보를 전체 주소에서 추출하는 것과 같은 URL을 처리해야합니다. parse_url () 은 PHP가 제공하는 매우 실용적인 기능으로, 이러한 작업을 빠르고 정확하게 완료하는 데 도움이 될 수 있습니다. 그러나 많은 개발자들이 함수에 의해 반환 된 각 필드의 의미를 이해하지 못하므로 실제로 사용하면 오해 나 오류가 발생합니다. 이 기사는 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
)
이 배열의 각 필드의 의미를 하나씩 구문 분석하겠습니다.
이것은 http , https , ftp 등과 같은 URL의 프로토콜 부분입니다. 예에서는 다음과 같습니다.
[scheme] => https
URL은 HTTPS 프로토콜을 사용 함을 나타냅니다.
즉, 호스트 이름, 일반적으로 도메인 이름 또는 IP 주소입니다. 예에서 :
[host] => gitbox.net
이것은 우리가 액세스하려는 서버 주소입니다.
이것은 연결의 포트 번호입니다. 포트가 URL에 명시 적으로 지정되지 않은 경우 결과에 필드가 나타나지 않습니다. 예를 들어, 기본 HTTP 포트는 80이고 HTTPS는 443입니다. 비 디펜트 포트를 사용하지 않으면 구문 분석됩니다.
[port] => 8080
이것은 우리가 포트 8080을 통해 액세스했음을 보여줍니다.
이 두 필드는 기본 인증에 사용되는 사용자 이름과 비밀번호를 나타냅니다. 일반적으로 https : // user : pass@host 와 같은 URL에 나타납니다. 예에서 :
[user] => user
[pass] => pass
참고 : 실제 프로덕션 환경의 URL 일반 텍스트에서 사용자 이름과 비밀번호를 전송하는 것이 좋습니다.
이것은 웹 사이트의 페이지 또는 인터페이스 경로와 같은 URL의 리소스의 경로 부분입니다.
[path] => /path/to/page.php
이 필드는 종종 라우팅, 권한 제어 또는 정적 리소스 액세스에 사용됩니다.
즉, 물음표 뒤에 쿼리 문자열 부분은 일반적으로 매개 변수를 전달하는 데 사용됩니다.
[query] => query=123
여기에 구문 분석되지 않은 원래 문자열이 반환됩니다. 추가 처리가 필요한 경우 parse_str () 함수를 사용하여 배열로 변환 할 수 있습니다.
parse_str($parsed['query'], $queryParams);
print_r($queryParams);
산출:
Array
(
[query] => 123
)
이것은 URL의 앵커 부분, 즉 # 이후의 컨텐츠이며, 일반적으로 페이지 내에서 점프하는 데 사용됩니다.
[fragment] => section
브라우저에서 서버로 전송되지 않으며 주로 클라이언트 페이지 제어에 사용됩니다.
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
불완전한 URL : parse_url () 은 들어오는 URL이 완료되어야합니다. 또한 /path/to/page.php?query=123 과 같은 상대 주소를 처리 할 수 있지만 해당 필드가 누락 될 수 있습니다.
반환 값은 False : 전달 된 문자열을 유효한 URL로 구문 분석 할 수없는 경우 함수는 False를 반환하고 결함 허용에주의를 기울여야합니다.
유니 코드 도메인 이름 : 중국어 또는 기타 유니 코드 문자를 포함하는 URL의 경우 먼저 변환 인코딩을 위해 IDN_TO_ASCII ()를 사용하는 것이 좋습니다.
Parse_url ()은 URL을 처리하기위한 PHP에서 필수 도구입니다. 반환하는 각 필드의 의미를 이해하면 URL 관련 개발 작업을보다 효율적으로 완료하는 데 도움이 될 수 있습니다. 라우팅 시스템을 작성하거나 점프 링크 처리 또는 API 요청 분석을 수행하든 중요한 역할을 할 수 있습니다. 기억하십시오 : parse_url () 및 parse_str () 와 합리적으로 일치하면 모든 URL을 쉽게 "분해"할 수 있습니다.