Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式阻塞域_Php_Regex - Fatal编程技术网

Php 使用正则表达式阻塞域

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如果您只是在进行赛前准备,您可能只需要以下几点: <

我正在创建一个黑名单,我想阻止给定URL的所有变体。比如说,

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都是不同的域。正如问题所说,用户希望阻止域中的所有变化,而不是域本身