Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengesahkan sama ada input ialah alamat IPv6 menggunakan regex PHP

Bagaimana untuk mengesahkan sama ada input ialah alamat IPv6 menggunakan regex PHP

WBOY
WBOYasal
2023-06-25 09:37:241763semak imbas

IPv6 merujuk kepada Internet Protocol Version 6, protokol alamat IP yang digunakan untuk komunikasi Internet. Alamat IPv6 ialah nombor yang terdiri daripada 128 bit, biasanya diwakili oleh lapan kumpulan nombor heksadesimal. Dalam PHP, anda boleh menggunakan ungkapan biasa untuk mengesahkan sama ada input ialah alamat IPv6 Berikut ialah cara menggunakan ungkapan biasa PHP untuk mengesahkan alamat IPv6.

Langkah 1: Fahami format alamat IPv6

Alamat IPv6 terdiri daripada 8 blok heksadesimal, setiap blok dipisahkan oleh titik bertindih (:). Setiap bongkah heksadesimal mestilah 4 digit perenambelasan. Berikut ialah beberapa contoh alamat IPv6:

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

Dalam alamat IPv6, terdapat beberapa peraturan khas:

  • Anda boleh menggunakan "::" untuk mewakili 0 blok berturut-turut, tetapi ia hanya boleh muncul sekali
  • Jika terdapat berbilang "::" dalam alamat IPv6, anda perlu mengisi 0 sebelum salah satu daripada ":: ";
  • Alamat IPv6 tidak boleh bermula dengan ":" atau berakhir dengan ":".

Langkah 2: Tulis ungkapan biasa PHP

Dalam PHP, anda boleh menggunakan fungsi preg_match untuk melakukan padanan ungkapan biasa. Berikut ialah contoh regex PHP untuk mengesahkan bahawa input ialah alamat IPv6:

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);

}

Bahagian utama regex ialah Ungkapan biasa untuk pemadanan pelbagai bahagian alamat IPv6. Ia termasuk 9 ungkapan biasa berikut:

  • alamat IPv6 penuh, seperti 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • dengan alamat IPv6 seperti itu; fe80::1;
  • Alamat IPv6 termampat dengan 0s terkemuka, seperti 2001:db8:85a3::8a2e:370:7334
  • Alamat IPv6 termampat dengan 0s tengah dan 0s terkemuka, seperti 20:01 : 370:7334;
  • Alamat IPv6 termampat dengan 0 tengah dan 0 di belakang, contohnya: 2001:db8:85a3::7334;
  • Alamat IPv6 termampat dengan 0 di hadapan, 0 tengah dan 0 di belakang, contohnya:: 1;
  • Alamat IPv6 mampat dengan pendahuluan 0, tengah 0 dan mengekor 0, contohnya::;
  • Alamat IPv6 termampat dengan pendahuluan 0, tengah 0 dan mengekor 0, contohnya::db8:85a3:0:0:8a2e:370 : 7334;
  • Alamat IPv6 termampat dengan 0 di hadapan, 0 tengah dan 0 di belakang, contohnya::db8:85a3:0:8a2e:370:7334

Langkah 3: Gunakan kod PHP untuk mengesahkan alamat IPv6

. menulis Selepas melengkapkan ungkapan biasa di atas, anda boleh menggunakan kod PHP berikut untuk mengesahkan sama ada input ialah alamat IPv6:

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

(is_ipv6_address($address )) {
echo "Input ialah alamat IPv6";
} yang lain {
echo "Input bukan alamat IPv6";
}

Dalam kod ini, rentetan alamat IPv6 $address ialah pertama ditakrifkan, dan fungsi is_ipv6_address digunakan untuk Rentetan itu disahkan Jika rentetan itu ialah alamat IPv6, keluarkan "Input ialah alamat IPv6", jika tidak, keluarkan "Input bukan alamat IPv6"

Ringkasan

Dalam PHP, anda boleh menggunakan ungkapan biasa untuk mengesahkan input sama ada ia adalah alamat IPv6 Mula-mula fahami format alamat IPv6, kemudian tulis ungkapan biasa yang sesuai dan gunakan fungsi preg_match untuk memadankan, ungkapan biasa di atas boleh mengesahkan dengan betul alamat IPv6.

Atas ialah kandungan terperinci Bagaimana untuk mengesahkan sama ada input ialah alamat IPv6 menggunakan regex PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn