繁体   English   中英

黑名单和preg_match

[英]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");
        }
}

你有两个问题:

  1. 数组变量被命名为blacklist但您在foreach循环中使用了blackList
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM