2013-01-11 229 views
0

我需要帮助验证域。 这是REG-EX我使用验证:/^[a-z\d][a-z\d-]{0,62}$/i需要帮助验证域

它能够满足我的需求,但无法验证域 像www.google * .com或www.google * .COM *。我不想保存这些类型的域名。

这是我使用的功能:

$pieces = explode(".",$domain_name); 
foreach($pieces as $piece) { 
    if (!preg_match('/^[a-z\d][a-z\d-]{0,62}$/i', $piece) || preg_match('/-$/', $piece)) { 
     return false; 
    } 
} 

对此有何指针?

+0

这听起来像你的问题是“我的正则表达式不允许在域名中使用星号字符,我不希望它,我该如何解决这个问题?” - 这没有意义。 – Quentin

+0

你的意思是这些星号的通配符? – inhan

+0

是的,我只想避免像这样www.google.com/ .com或www.google.com * – user1969981

回答

1

如果你只是想验证一个URL格式正确,使用方法:

filter_var('http://example.com', FILTER_VALIDATE_URL); 

正则表达式是昂贵的,当有可行的替代品,应避免。

+1

域名对于那些使用PHP <5.3.3 - FILTER_VALIDATE_URL'将返回错误,当URL中有破折号。我认为它在5.3.3中修复了 – inhan

+0

@inhan - 如果你使用的是PHP 5.3.3,则需要紧急升级。 – SDC

+0

@SDC不,我不是。我只记得阅读这个,所以我想让其他人确定。 – inhan