> 백엔드 개발 > PHP 튜토리얼 > PHP 정규식을 사용하여 입력이 IPv6 주소인지 확인하는 방법

PHP 정규식을 사용하여 입력이 IPv6 주소인지 확인하는 방법

WBOY
풀어 주다: 2023-06-25 09:54:01
원래의
1794명이 탐색했습니다.

IPv6은 인터넷 통신에 사용되는 IP 주소 프로토콜인 인터넷 프로토콜 버전 6을 나타냅니다. IPv6 주소는 128비트로 구성된 숫자이며 일반적으로 8개의 16진수 그룹으로 표시됩니다. PHP에서는 정규식을 사용하여 입력이 IPv6 주소인지 확인할 수 있습니다. 다음은 PHP 정규식을 사용하여 IPv6 주소를 확인하는 방법입니다.

1단계: IPv6 주소 형식 이해

IPv6 주소는 8개의 16진수 블록으로 구성되며 각 블록은 콜론(:)으로 구분됩니다. 각 16진수 블록은 4개의 16진수 숫자여야 합니다. 다음은 IPv6 주소의 몇 가지 예입니다.

2001:0db8:85a3:0000:0000:8a2e:0370:7334
fe80::1
::1

IPv6 주소에는 알아야 할 몇 가지 특수 규칙이 있습니다.

  • "::"을 사용하면 연속된 0 블록을 나타낼 수 있지만 한 번만 나타날 수 있습니다.
  • IPv6 주소에 "::"가 여러 개 있는 경우 "::" 중 하나 앞에 0을 채워야 합니다. ";
  • IPv6 주소는 ":"으로 시작하거나 ":"으로 끝날 수 없습니다.

2단계: PHP 정규식 작성

PHP에서는 preg_match 함수를 사용하여 정규식 일치를 수행할 수 있습니다. 다음은 입력이 IPv6 주소인지 확인하는 PHP 정규식의 예입니다.

function is_ipv6_address($address) {
return preg_match('/^(

  (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4})| # 1: full IPv6 address
  (([0-9a-fA-F]{1,4}:){1,7}:)                  # 2: compressed IPv6 address with leading zeros
  (:([0-9a-fA-F]{1,4}:){1,6})                  # 3: compressed IPv6 address with intermediate zeros
  (([0-9a-fA-F]{1,4}:){1,5}:)                  # 4: compressed IPv6 address with leading and intermediate zeros
  ((:[0-9a-fA-F]{1,4}){1,5}:)                  # 5: compressed IPv6 address with trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,4}:)                  # 6: compressed IPv6 address with leading, intermediate and trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,3}:)                  # 7: compressed IPv6 address with leading, intermediate and trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,2}:)                  # 8: compressed IPv6 address with leading, intermediate and trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,1}:)                  # 9: compressed IPv6 address with leading, intermediate and trailing zeros
  )$/i', $address);
로그인 후 복사

}

정규식의 주요 부분은 일치를 위한 정규식입니다. IPv6 주소의 다양한 부분에는 다음과 같은 9개의 정규 표현식이 포함됩니다.

  • 전체 IPv6 주소(예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)
  • 연속 0이 있는 IPv6 주소; fe80::1;
  • 2001:db8:85a3::8a2e:370:7334와 같이 앞에 0이 있는 압축된 IPv6 주소
  • 2001처럼 중간에 0이 있고 앞에 0이 있는 압축된 IPv6 주소 :db8::8a2e: 370:7334;
  • 가운데 0과 뒤에 0이 있는 압축된 IPv6 주소(예: 2001:db8:85a3::7334;
  • 앞에 0, 중간 0과 뒤에 0이 있는 압축된 IPv6 주소, 예: 1;
  • )
  • 선행 0, 중간 0 및 후행 0이 있는 압축된 IPv6 주소(예::;
  • 선행 0, 중간 0 및 후행 0이 있는 압축된 IPv6 주소, 예::db8:85a3:0:0:8a2e:370): 7334;
  • 앞에 0, 중간에 0, 뒤에 0이 있는 압축된 IPv6 주소(예::db8:85a3:0:8a2e:370:7334)

3단계: PHP 코드를 사용하여 IPv6 주소를 확인하세요. writing 위의 정규식을 완성한 후 다음 PHP 코드를 사용하여 입력이 IPv6 주소인지 확인할 수 있습니다:

$address = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";

if (is_ipv6_address($address )) {

echo "입력은 IPv6 주소입니다.";
} else {
echo "입력은 IPv6 주소가 아닙니다.";
}

이 코드에서 IPv6 주소 문자열 $address는 먼저 정의되고 is_ipv6_address 함수가 사용됩니다. 문자열이 검증되면 "입력은 IPv6 주소입니다"가 출력되고, 그렇지 않으면 "입력이 IPv6 주소가 아닙니다"가 출력됩니다.

요약

PHP에서, 정규식을 사용하여 입력을 확인할 수 있습니다. IPv6 주소인지 여부를 먼저 이해한 다음 적절한 정규식을 작성하고 preg_match 함수를 사용하여 일치하는지 확인합니다. IPv6 주소.

위 내용은 PHP 정규식을 사용하여 입력이 IPv6 주소인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿