使用preg_match在php中进行域验证

时间:2017-09-22 17:12:41

标签: php

我想使用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& 

请帮忙解决

2 个答案:

答案 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 mail.google.com or any www.google.com/images/xyz >

然后你将任何网址传递给这个函数,它会返回带扩展名的域名(.com,.net,.in无论如何),你可以查看你的inputdomain并验证简单。

希望这有帮助