不使用正規表示式的 PHP 域名驗證
許多開發人員都需要驗證域名,確保它們符合特定的格式規則。雖然正規表示式通常用於此任務,但它們可能很複雜且可能容易出錯。本文探討了在 PHP 中驗證網域名稱而不依賴正規表示式的解決方案。
在某些情況下,例如在使用遺留系統或處理嚴格的字元限制時,可能需要驗證網域無需借助正規表示式。以下函數透過實現一系列邏輯檢查來實現此目的:
<code class="php">function is_valid_domain_name($domain_name) { // Validate alphanumeric characters if (!preg_match("/^[a-zA-Z0-9]+$/", $domain_name)) { return false; } // Validate length of each label $labels = explode(".", $domain_name); foreach ($labels as $label) { if (strlen($label) < 1 || strlen($label) > 63) { return false; } } // Validate overall length if (strlen($domain_name) > 253) { return false; } return true; }</code>
此函數確保網域名稱以字母數字字元開頭和結尾,且網域名稱中的每個標籤都遵守指定的長度限制。它還會驗證網域的總長度。
測試案例
以下測試案例示範了此驗證功能的有效性:
<code class="php">is_valid_domain_name? [a] Y is_valid_domain_name? [0] Y is_valid_domain_name? [a.b] Y is_valid_domain_name? [localhost] Y is_valid_domain_name? [google.com] Y is_valid_domain_name? [news.google.co.uk] Y is_valid_domain_name? [xn--fsqu00a.xn--0zwm56d] Y is_valid_domain_name? [goo gle.com] N is_valid_domain_name? [google..com] N is_valid_domain_name? [google.com ] N is_valid_domain_name? [google-.com] N is_valid_domain_name? [.google.com] N is_valid_domain_name? [<script] N is_valid_domain_name? [alert(] N is_valid_domain_name? [.] N is_valid_domain_name? [..] N is_valid_domain_name? [ ] N is_valid_domain_name? [-] N is_valid_domain_name? [] N</code>
透過遵循這些邏輯檢查,該函數提供這些邏輯檢查,該函數提供這些邏輯檢查了一種可靠的方法來驗證域名,而無需正規表示式。這種方法增強了靈活性並減少了在 PHP 中驗證網域時出現錯誤的可能性。
以上是如何在沒有正規表示式的情況下在 PHP 中驗證網域?的詳細內容。更多資訊請關注PHP中文網其他相關文章!