Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 도메인 이름 유효성을 검사하는 방법

웹 애플리케이션을 개발하다 보면 사용자가 입력한 도메인 이름이 올바른 형식인지 확인해야 하는 경우가 자주 발생합니다. PHP에서는 preg_match 함수와 정규 표현식을 조합하여 도메인 이름의 유효성을 손쉽게 검사할 수 있습니다.

검사 항목 이해하기

도메인 이름이 유효한지 판단하기 위해서는 일반적으로 다음 세 가지 기준을 확인합니다.

  • 허용되는 문자 검사: 도메인은 영문 소문자, 숫자, 하이픈(-)으로만 구성되어야 합니다.
  • 전체 길이 검사: 도메인 이름 전체 길이는 최대 253자를 초과할 수 없습니다.
  • 각 라벨 길이 검사: 점(.)으로 구분된 각 라벨(예: www, example, com)은 최대 63자까지 허용됩니다.

예제 코드

<?php
function is_valid_domain_name($domain_name) {
    return (
        preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) // 허용 문자 검사
        && preg_match("/^.{1,253}$/", $domain_name) // 전체 길이 검사
        && preg_match("/^[^.]{1,63}(\.[^.]{1,63})*$/", $domain_name) // 각 라벨 길이 검사
    );
}
?>

사용 방법

정의한 함수에 도메인 이름을 인수로 전달하여 호출하면 됩니다.

$domain_name = 'tutorialspoint.com';

if (is_valid_domain_name($domain_name)) {
    echo "유효한 도메인 이름입니다.";
} else {
    echo "유효하지 않은 도메인 이름입니다.";
}

출력 결과

유효한 도메인 이름입니다.

코드 설명

위 코드에서 사용자가 직접 정의한 is_valid_domain_name 함수는 세 개의 preg_match 호출 결과를 논리 AND(&&)로 결합합니다. 즉, 세 가지 조건이 모두 충족되어야만 true를 반환합니다.

  • 첫 번째 정규 표현식은 도메인에 포함될 수 있는 문자(영문자, 숫자, 하이픈)와 라벨 구조를 검증하며, i 수정자를 통해 대소문자를 구분하지 않습니다.
  • 두 번째 정규 표현식은 전체 문자열 길이가 1자 이상 253자 이하인지 확인합니다.
  • 세 번째 정규 표현식은 점으로 구분된 각 라벨이 63자를 넘지 않는지 검사합니다.

주의 사항

이 함수는 순수한 도메인 이름(예: example.com)을 기준으로 동작합니다. 만약 https://example.com처럼 프로토콜이나 경로가 포함된 URL 전체를 전달하면 검사에 실패할 수 있으므로, 필요하다면 parse_url() 함수를 사용해 호스트 부분만 추출한 후 검사하는 것이 좋습니다.