[英]Blacklist and preg_match
我以为我弄明白了,但我遇到了一个问题。 我正在我的应用程序中创建一个URL黑名单。 我需要从一组域中阻止所有子域,目录等。 下面是我拥有的数组:
$blacklist = array(
'/\.google\./',
'/\.microsoft\./',
);
这是我正在检查的地方:
$host = parse_url($url, PHP_URL_HOST);
$blackList = $GLOBALS['blacklist'];
foreach($blackList as $stop) {
if (preg_match($host === $stop)) {
die('blacklisted');
}
}
当我运行它时,它不会按预期死亡。
你的foreach循环应该是这样的:
foreach($blacklist as $stop) {
if (preg_match($stop, $host)) {
die("blacklisted\n");
}
}
你有两个问题:
blacklist
但您在foreach
循环中使用了blackList
。 preg_match
使用不正确,它需要至少2个参数,如我的答案。 你正在使用preg_match
错误!
$host = parse_url($url, PHP_URL_HOST);
foreach ($blacklist as $pattern){
$matches = array();
preg_match($pattern, $host, $matches);
if (count($matches)) die('blacklisted');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.