首頁  >  文章  >  後端開發  >  可以在沒有正規表示式的情況下在 PHP 中驗證網域嗎?

可以在沒有正規表示式的情況下在 PHP 中驗證網域嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 19:29:30550瀏覽

Can Domain Names Be Validated in PHP Without Regular Expressions?

在 PHP 中驗證網域名稱

可以在沒有正規表示式的情況下進行驗證嗎?

由於潛在的安全性,不建議在沒有正規表示式的情況下驗證網域漏洞和不一致的結果。正規表示式提供了一種強大且標準化的方法來確保準確性。

用於域名驗證的正規表示式模式

要使用正規表示式驗證域名,請考慮以下模式:

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

此表達式包含多個條件:

  • 有效字元:確保網域名稱僅包含字母數字字元、連字號和句點。
  • 總長度:網域長度不得超過253個字。
  • 單一標籤長度:每個標籤(以句點分隔的部分)不得超過63個字元。

自訂驗證函數

改進的網域驗證 PHP 函數:

<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)
            &amp;&amp; preg_match("/^.{1,253}$/", $domain_name)
            &amp;&amp; preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name));
}</code>

測試案例

Domain Name Validation Result
a Yes
0 Yes
a.b Yes
localhost Yes
google.com Yes
news.google.co.uk Yes
xn--fsqu00a.xn--0zwm56d Yes
goo gle.com No
google..com No
google.com No
google-.com No
.google.com No
No
alert( No
. No
.. No
No
- No
No

以上是可以在沒有正規表示式的情況下在 PHP 中驗證網域嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn