URLs parse_url
(PHP 4, PHP 5, PHP 7, PHP 8)
parse_url — URL을 구문 분석하고 해당 구성 요소를 반환합니다.
설명
parse_url(string $url
, int $component
= -1): int|string|array|null|false
이 함수는 URL을 구문 분석하고 존재하는 URL의 다양한 구성 요소를 포함하는 연관 배열을 반환합니다. 배열 요소의 값은 URL 디코딩되지 않습니다.
이 함수는 주어진 URL의 유효성을 검사하기 위한 것이 아니라 아래 나열된 부분으로만 분할합니다. 부분 및 유효하지 않은 URL도 허용되며 parse_url()은 이를 올바르게 구문 분석하기 위해 최선을 다합니다.
매개변수
url
- 구문 분석할 URL입니다.
component
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 구성 요소만 문자열로 검색합니다(PHP_URL_PORT
가 지정된 경우 제외, 반환 값이 int인 경우 제외).
반환 값
심각한 형식의 URL에서 parse_url()은 false
를 반환할 수 있습니다.
component
매개변수가 생략되면 연관 배열이 리턴됩니다. 적어도 하나의 요소가 배열 내에 존재합니다. 이 배열의 잠재적 키는 다음과 같습니다.
- scheme - e.g. http
- host
- port
- user
- pass
- path
- query - after the question mark
?
- fragment - after the hashmark
#
component
매개변수가 지정되면 parse_url()은 배열 대신 문자열(또는 PHP_URL_PORT의 경우 int)을 반환합니다. 요청된 구성 요소가 지정된 URL 내에 존재하지 않으면 null
이 반환됩니다. PHP 8.0.0부터 parse_url()은 부재 및 빈 쿼리와 조각을 구별합니다.
http://example.com/foo → query = null, fragment = null http://example.com/foo? → query = "", fragment = null http://example.com/foo# → query = null, fragment = "" http://example.com/foo?# → query = "", fragment = ""
이전에는 모든 경우에 쿼리 및 조각이 null
이 되었습니다.
구성 요소의 제어 문자(cf. ctype_cntrl())는 밑줄(_)로 대체됩니다.
변경 로그
버전 | 설명 |
---|---|
8.0.0 | parse_url()은 이제 부재 및 빈 쿼리 및 조각을 구별합니다. |
Examples
예제 #1 parse_url() 예제
<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>
위의 예는 다음을 출력합니다.
array(8) { ["scheme"]=> string(4) "http" ["host"]=> string(8) "hostname" ["port"]=> int(9090) ["user"]=> string(8) "username" ["pass"]=> string(8) "password" ["path"]=> string(5) "/path" ["query"]=> string(9) "arg=value" ["fragment"]=> string(6) "anchor" } string(4) "http" string(8) "username" string(8) "password" string(8) "hostname" int(9090) string(5) "/path" string(9) "arg=value" string(6) "anchor"
예제 #2 스키마가 누락된 parse_url() 예제
<?php
$url = '//www.example.com/path?googleguy=googley';
// Prior to 5.4.7 this would show the path as "//www.example.com/path"
var_dump(parse_url($url));
?>
위의 예는 다음을 출력합니다.
array(3) { ["host"]=> string(15) "www.example.com" ["path"]=> string(5) "/path" ["query"]=> string(17) "googleguy=googley" }
메모
주의 이 함수는 상대 또는 유효하지 않은 URL에 대해 올바른 결과를 제공하지 않을 수 있으며 결과가 HTTP 클라이언트의 일반적인 동작과 일치하지 않을 수도 있습니다. 신뢰할 수 없는 입력의 URL을 구문 분석해야 하는 경우 추가 유효성 검사가 필요합니다. FILTER_VALIDATE_URL
필터와 함께 filter_var()를 사용합니다.
메모: 이 함수는 특히 URI가 아닌 URL을 구문 분석하기 위한 것입니다. 그러나 PHP의 이전 버전과의 호환성 요구 사항을 준수하기 위해 삼중 슬래시(file:///...)가 허용되는 file:// 체계에 대한 예외를 만듭니다. 다른 체계의 경우 이것은 유효하지 않습니다.
기타
- pathinfo() - 파일 경로에 대한 정보를 반환합니다.
- parse_str() - 문자열을 변수로 구문 분석
- http_build_query() - URL 인코딩된 쿼리 문자열 생성
- dirname() - 상위 디렉토리의 경로를 반환
- basename() - 경로의 후행 이름 구성 요소를 반환합니다.
- » RFC 3986