preg_match с внешним текстовым файлом - PullRequest
0 голосов
/ 25 октября 2011

У меня есть файл .txt, который содержит много запрещенных слов на форуме, с выражением вроде:

// filterwords.txt
XXX
YYY
ZZZ

и затем я хотел бы использовать preg_match для проверки входящего текста $ str с этими словами; если эти запрещенные слова не включены, мы можем что-то сделать; в противном случае мы делаем другое дело ... Я не уверен насчет выражения, и я просто знаю: -

$filter_word = file("filterwords.txt")

for ($i=0; $i< count($filter_word);$i++)
{
  if(!preg_match($filter_word[$i],$str))
  {
    echo "not ok!";
    exit;
  }
  else
  {
    echo "ok!!";
    exit;
  }
}

Могут ли эксперты научить меня писать часть preg_match? большое спасибо.

1 Ответ

1 голос
/ 25 октября 2011

Как насчет этого:

<?php
    $file = file_get_contents('filterwords.txt');
    $words = preg_split("#\r?\n#", $file, -1, PREG_SPLIT_NO_EMPTY);

    #Added to escape metacharacters as mentioned by @ridgerunner
    $words = array_filter("preg_quote", $words);

    $pattern = "#\b(". implode('|', $words) . ")\b#";

    if(preg_match($pattern, $str))
    {
        echo "bad word detected";
    }
?>

PS Предполагается, что у вас есть текст для проверки в $ str var

...