2013-01-11 177 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