Ham
Ham

Reputation: 814

preg_match with external txt file

I have a .txt file that holds a lot of forbidden words in a forum, with the expression like:

//filterwords.txt
XXX
YYY
ZZZ

and then, I would like to use preg_match to check incoming text $str with these words; if those forbidden words are not included, we can do something; otherwise, we do another thing... I am not sure about the expression, and I just know:-

$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;
  }
}

Could experts teach me how to write the preg_match part? thankyou.

Upvotes: 1

Views: 6913

Answers (1)

SERPRO
SERPRO

Reputation: 10067

How about this:

<?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";
    }
?>

P.S. That's assuming that you have the text to check in the $str var

Upvotes: 1

Related Questions