-
parse_url() 함수tmp 2024. 10. 23. 20:21
parse_url() 함수는 PHP에서 URL을 분석하여 URL의 구성 요소들을 분리해주는 함수입니다. 이 함수는 URL을 문자열로 입력받아 URL의 각 부분을 반환하는데, 반환된 값은 연관 배열(associative array) 형태입니다.
함수 정의
parse_url(string $url, int $component = -1): array|string|int|null|false매개변수
- $url (필수): 분석할 URL을 나타내는 문자열입니다.
- $component (선택): 특정 URL의 구성 요소를 추출하고 싶을 때 사용하는 옵션입니다. 예를 들어, PHP_URL_SCHEME을 사용하면 스킴(scheme, 프로토콜)만 반환합니다.
반환 값
- 연관 배열 (associative array): URL의 구성 요소들이 키와 값의 쌍으로 포함된 배열로 반환됩니다. 예를 들어, URL의 프로토콜, 호스트, 경로, 쿼리 문자열 등을 분리해줍니다.
- 단일 값: $component 옵션을 사용하면, 그에 해당하는 특정 요소만 반환할 수 있습니다.
- false: URL 구문에 오류가 있을 경우 false를 반환합니다.
반환 배열의 키 (URL의 구성 요소들)
parse_url() 함수가 반환하는 배열의 키는 아래와 같습니다:
- scheme (프로토콜, 예: "http", "https")
- host (호스트명, 예: "www.example.com")
- port (포트 번호, 예: 80)
- user (사용자명)
- pass (비밀번호)
- path (경로, 예: "/path/to/page")
- query (쿼리 문자열, 예: "id=1&name=abc")
- fragment (URL의 앵커 또는 해시, 예: "#section")
예시 1: URL 전체 분석
$parsedUrl = parse_url($url);print_r($parsedUrl);결과
Array ([scheme] => https[host] => www.example.com[port] => 8080 [user] => user[pass] => pass[path] => /path[query] => query=123[fragment] => fragment)예시 2: 특정 구성 요소만 추출 (스킴만 추출)
$scheme = parse_url($url, PHP_URL_SCHEME);echo $scheme; // https예시 3: 잘못된 URL 처리
php코드 복사$invalidUrl = "http://:8080";$result = parse_url($invalidUrl);var_dump($result); // bool(false)$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: 해시/프래그먼트만 반환
사용 예: HTTP 요청 처리에 사용
parse_url()은 주로 HTTP 요청에서 URL을 처리할 때 사용됩니다. 예를 들어, 다음과 같은 방식으로 클라이언트의 요청 URI에서 경로 정보를 추출할 수 있습니다:
$requestUri = $_SERVER['REQUEST_URI'];$parsedUri = parse_url($requestUri, PHP_URL_PATH);echo $parsedUri; // 요청된 경로만 출력이렇게 parse_url() 함수를 활용하면 복잡한 URL을 쉽게 분석하고 필요한 부분만 추출할 수 있어 유용합니다.
'tmp' 카테고리의 다른 글
php array_map(), array_filter(), array_reduce(), array_walk() 함 (0) 2024.10.26 PHP 8.2 이상에서 클래스의 프로퍼티 동적 설정 제한 (1) 2024.10.24 Early binding 과 Late static binding (2) 2024.10.05 php generator (1) 2024.09.29 PHP에서 null (1) 2024.09.24