Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Tidak Boleh Mengesahkan Domain dalam PHP Tanpa Ungkapan Biasa?

Mengapa Saya Tidak Boleh Mengesahkan Domain dalam PHP Tanpa Ungkapan Biasa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 05:01:02179semak imbas

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

Pengesahan nama domain PHP

Soalan: Bagaimanakah untuk mengesahkan nama domain dalam PHP tanpa menggunakan ungkapan biasa?

Keperluan pengesahan:

  • Bermula dengan huruf atau nombor
  • Boleh mengandungi huruf, nombor dan sempang
  • Bermula dengan Berakhir dengan huruf atau nombor
  • Panjang antara 1 dan 253 aksara
  • Setiap panjang label antara 1 dan 63 aksara

Jawapan yang mungkin:

Pengesahan nama domain tanpa menggunakan ungkapan biasa tidak boleh dilakukan kerana berbilang peraturan dan sekatan perlu disemak.

Corak ungkapan biasa:

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

Maksud:

  • ^ dan $ anchor rentetan permulaan dan penghujung.
  • [a-zd] sepadan dengan huruf atau nombor.
  • (-*[a-zd])* sepadan dengan sifar atau lebih huruf atau nombor yang dipisahkan oleh tanda sempang.
  • Padan dengan tempoh.
  • {} menentukan bilangan ulangan.

Kod sampel:

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

Kes ujian:

域名 有效性
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

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengesahkan Domain dalam PHP Tanpa Ungkapan Biasa?. 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