用于验证域白名单的脚本

时间:2013-10-20 17:19:38

标签: php regex

我有一个简单的问题。我需要验证字符串并验证白名单域,如下所示:

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

但是这种方法并没有像我这样的域名:

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

如何解决这个问题? :)

3 个答案:

答案 0 :(得分:2)

尝试这样可以删除所有以www开头的内容,直到第一个点(包括):

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

答案 1 :(得分:1)

您可以使用:

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

它会将anything.domainname.suffix转换为domainname.suffix,以便您可以针对您的列表进行测试。

答案 2 :(得分:0)

另一个preg_match示例:

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