首页  >  文章  >  后端开发  >  如何在没有正则表达式的情况下在 PHP 中验证域名?

如何在没有正则表达式的情况下在 PHP 中验证域名?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 19:12:02938浏览

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