>백엔드 개발 >PHP 튜토리얼 >정규식 없이 PHP에서 도메인을 확인할 수 없는 이유는 무엇입니까?

정규식 없이 PHP에서 도메인을 확인할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-31 05:01:02266검색

Why Can't I Validate Domains in PHP Without Regular Expressions?

PHP 도메인 이름 확인

질문: 정규 표현식을 사용하지 않고 PHP에서 도메인 이름을 확인하는 방법은 무엇입니까?

확인 요구 사항:

  • 문자 또는 숫자로 시작
  • 문자, 숫자, 하이픈 포함 가능
  • 시작 문자 또는 숫자로 끝남
  • 길이 1~253자
  • 각 라벨 길이 1~63자

가능한 답변:

여러 규칙과 제한 사항을 확인해야 하므로 정규식을 사용하지 않고 도메인 이름을 검증하는 것은 불가능합니다.

정규 표현식 패턴:

/^[a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i

의미:

  • ^ 및 $ 앵커 문자열은 시작과 끝.
  • [a-zd]는 문자 또는 숫자와 일치합니다.
  • (-*[a-zd])*는 하이픈으로 구분된 0개 이상의 문자 또는 숫자와 일치합니다.
  • . 마침표와 일치합니다.
  • {}는 반복 횟수를 지정합니다.

샘플 코드:

<code class="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) //valid chars check
            &amp;&amp; preg_match("/^.{1,253}$/", $domain_name) //overall length check
            &amp;&amp; preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name)   ); //length of each label
}</code>

테스트 케이스:

域名 有效性
a Y
0 Y
a.b Y
localhost Y
google.com Y
news.google.co.uk Y
xn--fsqu00a.xn--0zwm56d Y
goo gle.com N
google..com N
google.com N
google-.com N
.google.com N
N
alert( N
. N
.. N
N
- N
[] N

위 내용은 정규식 없이 PHP에서 도메인을 확인할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.