0

我正在做一个发布广告的网站,在添加广告系列(广告)的部分中,我需要防止广告系列标题中出现某些坏词。因此,当广告商添加广告系列时,我检查了这些标题。这些坏词以 txt 格式存储在文件中。我用过这段代码。

$string = $description;

$badwords = file( "badwords.txt" );
if ( $badwords ) { 
  foreach ( $badwords as $line ) {  
    if ( preg_match("/$line/", $string) ) { 
      echo $string; die();
      return array ( 0, $language['bad_words_error'] );
    }
  }
}

我已经尝试过in_array(),但我无法匹配$string.

if ( in_array($string, $badwords) ) { 
  echo "The word ".$string ." is a bad keyword"; 
}
4

2 回答 2

2

通常,问题来自文件中留下的尾随空格。

要解决此问题,请trim()在单个$lines 上使用。

于 2012-07-21T07:53:12.823 回答
0
foreach ($badwords as $word) {
  if (preg_match("/\b$word\b/", $string)) {
    echo $string . ' contains bad word ' . $value;
  }
}

我假设您的 txt 文件每行包含一个坏词。还要注意你的坏词不包含可能破坏正则表达式模式的字符。

于 2012-07-21T07:47:08.727 回答