繁体   English   中英

使用preg_match在php中验证域

[英]domain validate in php using preg_match

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

请帮忙解决

试试这个。 它应该完全按照您想要的去做。

$domain_validation = '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\&\.\/\?\:@\-_=#])*/';
if(preg_match("$domain_validation", $inputDomainName)){
    $validSite = true;
}

你可以试试这个功能

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;
}

上面的函数返回域带有扩展名

示例: 如果您通过子网域mail.google.com or any www.google.com/images/xyz传递任何内容,它将返回google.com

然后,您将任何url传递给此函数,它将返回带有扩展名的域(.com,.net,.in等),并且您可以使用inputdomain进行检查并进行简单验证。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM