2013-10-20 90 views
0

我有个简单的问题。我需要验证字符串和验证这样的白名单域名:验证域名白名单的脚本

$WList = array('mega.co.nz','mediafire.com','putlocker.com',''); 
$Dominio = str_replace("www.","",parse_url($EnlaceUrl,PHP_URL_HOST)); 
if(in_array($Dominio,$WList)){//ok} 

但这种方法犯规retieve我像域:

www42.zippyshare.com,www51.zippyshare.com,www71.zippyshare.com,www23.zippyshare.com 

如何解决这个问题呢? :)

+0

你有什么确切要求? – NoLiver92

+0

'$ EnlaceUrl'从哪里来?你想要做什么? –

+0

$ Dominio = preg_replace(“/ www(。*?)\ ./”,“”,parse_url($ EnlaceUrl,PHP_URL_HOST)); – Subin

回答

2

试试这个它删除所有与www开始,直到第一个点(含):

$Dominio = preg_replace('~^www[^.]*\.~', '', parse_url($EnlaceUrl,PHP_URL_HOST)); 
+0

我猜,字面点应该也是比赛的一部分。 –

+0

@FabrícioMatté:right <°))))))> –

1

您可以使用此:

if (preg_match('/[\w\d-]+\.(\w{3,4}|(\w{2,3}\.\w{2}))$/', $Dominio, $match)) 
    $Dominio = $match[1]; 

它将anything.domainname.suffix转换成domainname.suffix所以你可以测试你的清单。

0

另一个的preg_match例如:

if(preg_match("/(?:([^.]+).)?([^.]+).([^\\/]+)/", $Dominio, $m)) { 
    $Dominio = $m[2] . '.' $m[3]; 
} 
+0

有了这个正则表达式,我会毫无例外地回顾我的domaind和后缀吗? ej subdomain.domain.com,www1.subdomain.com,w.subdomain.com – 50l3r

+0

是的,'blah.domain.co.uk'会返回'm [1] ='blah',m [2] ='domain' ,m [3] ='co.uk'' – OneOfOne