gpt4 book ai didi

php - 如何在 PHP 中验证域名?

转载 作者:IT王子 更新时间:2023-10-29 01:10:49 24 4
gpt4 key购买 nike

不使用正则表达式是否可行?

例如,我想检查一个字符串是否是一个有效的域:

domain-name
abcd
example

是有效域。这些当然是无效的:

domaia@name
ab$%cd

等等。所以基本上它应该以字母数字字符开头,然后可能有更多的数字字符加上连字符。而且它也必须以 alnum 字符结尾。

如果不可能,您能否建议我使用正则表达式模式来执行此操作?

编辑:

为什么这行不通?我是否错误地使用了 preg_match?

$domain = '@djkal';
$regexp = '/^[a-zA-Z0-9][a-zA-Z0-9\-\_]+[a-zA-Z0-9]$/';
if (false === preg_match($regexp, $domain)) {
throw new Exception('Domain invalid');
}

最佳答案

<?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) //valid chars check
&& preg_match("/^.{1,253}$/", $domain_name) //overall length check
&& preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) ); //length of each label
}
?>

测试用例:

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

关于php - 如何在 PHP 中验证域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com