현재 위치: > 최신 기사 목록> parse_url false의 반환 값은 왜입니까? 일반적인 이유에 대한 요약

parse_url false의 반환 값은 왜입니까? 일반적인 이유에 대한 요약

gitbox 2025-05-18

PHP에서 Parse_url은 URL을 구문 분석하기위한 강력한 기능입니다. URL을 여러 부분 (예 : 체계, 호스트, 경로, 쿼리 등)으로 분할하여 개발자의 URL 처리를 크게 용이하게합니다. 그러나 parse_url을 사용하는 동안 False가 반환되는 상황이 발생하면 구문 분석이 실패했음을 의미합니다. 이 기사는 parse_url이 거짓을 반환하는 일반적인 이유와이를 다루는 방법을 심층적으로 분석합니다.

1. parse_url 의 기본 사용

먼저 일반적인 사용 예를 살펴 보겠습니다.

 $url = "https://gitbox.net/path/to/resource?query=123";
$parsed = parse_url($url);
print_r($parsed);

출력은 다음과 같습니다.

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /path/to/resource
    [query] => query=123
)

parse_url이 올바르게 구조화 된 URL을 처리하면 URL의 다양한 구성 요소를 포함하는 연관 배열을 반환합니다. 그러나 입력이 사양을 준수하지 않으면 False를 반환합니다.

2. parse_url이 거짓을 반환하는 일반적인 이유

1. URL에는 불법 문자가 포함되어 있습니다

parse_url은 내부적으로 RFC 3986 사양에 따라 달라지며 URL에 불법 문자 (예 : 공백, 특정 제어 문자, eScaped 특수 문자 등)가 포함 된 경우 구문 분석이 실패합니다.

예:

 $url = "http://gitbox.net/길/의지"; // 중국어를 모음하지 않았습니다
$result = parse_url($url); // 반품 false

해결책:

URL의 URLENCODE 또는 부분 인코딩을 수행하여 사양을 준수하는지 확인하십시오.

 $url = "http://gitbox.net/" . urlencode("길/의지");

2. 입력은 문자열이 아닙니다

parse_url은 문자열을 통과해야합니다. 배열, 객체 또는 null 을 통과하면 직접 false를 반환합니다.

예:

 $url = null;
$result = parse_url($url); // 반품 false

해결책:

문자열 유형이 전달되어 있는지 확인하십시오.

 $url = (string)$url;

3. URL에 핵심 부분이 없습니다 (예 : 호스트)

parse_url은 상대 경로 (예 : /index.php )를 지원하지만 일부 버전에서는 체계가없고 형식이 혼란 스러우면 False를 반환 할 수 있습니다.

예:

 $url = "://gitbox.net"; // 부족 scheme 접두사
$result = parse_url($url); // 반품 false

해결책:

완전한 URL :

 $url = "http://gitbox.net";

4. URL이 너무 길거나 형식이 매우 복잡합니다.

URL이 너무 크거나 많은 중첩 매개 변수가 포함되어 있거나 너무 복잡하여 내장 기능으로 구문 분석 할 수 없으면 구문 분석이 실패 할 수도 있습니다.

해결책:

통과하기 전에 URL을 단순화하거나 정기적으로 일치 및 구조 검증을 수행하십시오.

3. parse_url을 피하는 방법은 거짓을 반환합니다

parse_url이 실패하지 않도록하기 위해 다음 전략을 채택 할 수 있습니다.

  1. 사용자 입력의 엄격한 검증 : 일반 또는 필터 기능 필터 _var ($ URL, Filter_Validate_URL)를 사용하십시오.

  2. 트림을 사용하여 추가 공백과 URLENCODE 인코딩 경로를 제거하는 등 URL을 전처리하십시오 .

  3. 오류 처리 메커니즘 : Parse_url을 호출 한 후 먼저 False 인지 확인한 다음 후속 작업을 수행하십시오.

샘플 코드 :

 $url = "https://gitbox.net/path?query=value";

if (($parsed = parse_url($url)) === false) {
    echo "URL 유효하지 않은";
} else {
    print_r($parsed);
}

4. 호환성 팁

PHP의 다른 버전은 parse_url 에 대해 다른 결함 공차를 가질 수 있습니다. 예를 들어, PHP 5.X와 PHP 7.x/8.x 사이의 불법 문자 또는 누락 된 체계를 처리하는 데 차이가 있습니다. 따라서 교차 버전 개발에서는 항상 법적, 완전 및 RFC 3986 대응 URL의 들어오는 것이 전달되도록 권장합니다.