【问题标题】:How to validate a correct domain name and sub domain in php如何在php中验证正确的域名和子域
【发布时间】:2011-03-08 18:44:03
【问题描述】:

如何删除 www验证 有效域名。

有效域

domain.com
subdomain.domain.com
sub-domain.domain.com

无效域

www.domain.com
www.subdomain.domain.com
http://www.domain.com/
http://www.subdomain.com/
www.domain.com/folder/

代码如何?

$domain ='www.domain.com/folder/';
if() {
// validate here
}

【问题讨论】:

  • www.domain.com, www.subdomain.domain.com - 这里什么无效?
  • 您为什么将 www 子域与其他所有子域区别对待?它没有特殊含义,除了通常用于网站,但约定也与其他子域相关(例如 ftp、smtp、imap 等)
  • 这只是为了我的记录。我想在没有 www 的情况下存储域。
  • @wow 您应该被告知在某些域上www 子域是必需的。

标签: php regex validation dns


【解决方案1】:

试试这个:

if (!preg_match('/^[a-zA-Z]+[a-zA-Z0-9-]+[a-zA-Z0-9]+$/', $subdomain) || substr_count($subdomain,'--') >= 1) {
                echo "Invalid Subdomain";
              }
              else{ 
                 echo Valid Subdomain; 
              }

【讨论】:

    【解决方案2】:
    $url = "http://stackoverflow.com/";
    if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) {
        echo "Your url is ok.";
    } else {
        echo "Wrong url.";
    }
    

    【讨论】:

      【解决方案3】:

      首先,手动去掉 www.然后只需确保它的格式为 domain.tld 或 something.domain.tld

      $domain = str_replace('www.','',$domain);

      if(preg_match('/([a-zA-Z0-9\-_]+\.)?[a-zA-Z0-9\-_]+\.[a-zA-Z]{2,5}/',$domain)) //valid domain

      【讨论】:

      • 您似乎把., 混在一起了……而且TLD 不限于4 个字符……而且问题似乎是要拒绝带有www 的主机名,而不是标准化。
      • something.museum? TLD 中的 6 个字符。也可以再加一个检查,域名和子域名最多63个字符。
      • 如果您使用 str_replace 并且有这样的域名,则域字符串将中断:domainwww.com 因为您从字符串中删除了www. 的所有实例,结果最终将看起来像这样@ 987654328@.
      【解决方案4】:

      看看http://framework.zend.com/apidoc/core/Zend_Validate/Zend_Validate_Hostname.html (Zend_Validate_Hostname) 类。我认为您可以在 Zend Framework 之外使用它,只需稍作调整即可。

      【讨论】:

        猜你喜欢
        • 2010-12-17
        • 2013-07-27
        • 1970-01-01
        • 2011-03-02
        • 1970-01-01
        • 2011-05-04
        • 2013-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多