首頁 >後端開發 >php教程 >如何在沒有正規表示式的情況下在 PHP 中驗證網域?

如何在沒有正規表示式的情況下在 PHP 中驗證網域?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 19:12:021003瀏覽

How to Validate Domain Names in PHP Without Regular Expressions?

不使用正規表示式的 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中文網其他相關文章!

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