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

WBOY
Lepaskan: 2023-06-25 09:54:01
asal
1724 orang telah melayarinya

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);
Salin selepas log masuk

}

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!