Php 使用正则表达式阻塞域
我正在创建一个黑名单,我想阻止给定URL的所有变体。比如说,Php 使用正则表达式阻塞域,php,regex,Php,Regex,我正在创建一个黑名单,我想阻止给定URL的所有变体。比如说, www.google.com google.com google.com/maps sub.google.com google.com/dir/dir2/dir3 我对RegEx几乎一无所知,到目前为止,我有一个微弱的尝试: $blacklist = array( '\.google.\\', ); 有人能帮我吗 编辑: 我还想阻止所有具有特定扩展的域,例如 我 .xxx如果您只是在进行赛前准备,您可能只需要以下几点: <
www.google.com
google.com
google.com/maps
sub.google.com
google.com/dir/dir2/dir3
我对RegEx几乎一无所知,到目前为止,我有一个微弱的尝试:
$blacklist = array(
'\.google.\\',
);
有人能帮我吗
编辑:
我还想阻止所有具有特定扩展的域,例如
我
.xxx如果您只是在进行赛前准备,您可能只需要以下几点:
<?php
$subject = "somedomain";
$pattern = '/\.google\./';
if(preg_match($pattern, $subject)){
die('blacklisted');
}
?>
如果您只想阻止域,那么为什么不简单地使用其真正好且比regex更快的匹配来进行简单的模式匹配。。查看链接
$domain_name = "www.maps.google.com";
if(strpos($domain_name,"google") > 1)
do sumthing here
else
do sumthing
希望它有帮助:)并且要阻止所有扩展名为
.me
的域,请使用“/\.me\b/”添加正则表达式后,我有$blacklist=array(“/\.google\./”)
和$host=parse\u url($url,PHP\u url\u host);如果(preg_match($host,$GLOBALS['blacklist']){return false;}
但是它返回的是true而不是false,我认为您的模式和黑名单数组是向后的,在这个函数中不是相反的方式代码>不是相反。你不能将数组传递给preg_match,根据文档,它必须是字符串:如果域是maps.googles.com怎么办?注意末尾添加的s
。它会返回假阳性吗?Paul bro googles.com和google.com都是不同的域。正如问题所说,用户希望阻止域中的所有变化,而不是域本身