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

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

WBOY
WBOY원래의
2023-06-25 09:37:241796검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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