我想使用preg_match验证php中的域名
例如,这些都是有效的:
https://www.google.com
http://www.google.com
www.google.com
google.com
google.com/
https://www.google.com.tr/search?dcr=0&source=hp&q=web+ui&
我只能验证以下示例
https://www.google.com
http://www.google.com
www.google.com
google.com
$domain_validation = "/(?:http(s)?:\/\/)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+(?:[a-z]{2,63}|[a-z0-9]{2,59})?(?:\/)+$/i";
if(preg_match("$domain_validation", $inputDomainName)){
$validSite = true;
}
我想验证这个
google.com/
https://www.google.com.tr/search?dcr=0&source=hp&q=web+ui&
请帮忙解决
答案 0 :(得分:1)
试试这个。它应该完全符合您的要求。
$domain_validation = '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\&\.\/\?\:@\-_=#])*/';
if(preg_match("$domain_validation", $inputDomainName)){
$validSite = true;
}
答案 1 :(得分:0)
您可以尝试此功能
function getDomain($url) {
$pieces = parse_url($url);
$domain = isset($pieces['host']) ? $pieces['host'] : '';
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
return $regs['domain'];
}
return false;
}
以上函数返回域扩展名为
示例: 如果您通过子域google.com
然后你将任何网址传递给这个函数,它会返回带扩展名的域名(.com,.net,.in无论如何),你可以查看你的inputdomain并验证简单。
希望这有帮助