不使用正则表达式的 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中文网其他相关文章!