如何解决数组搜索中的问题

时间:2012-07-21 07:30:32

标签: php arrays

我正在建立一个发布广告的网站,在一个添加广告系列(广告)的部分,我需要阻止广告系列标题中的某些坏词。所以我在广告客户添加广告系列时检查了这些标题。这些坏词以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"; 
}

2 个答案:

答案 0 :(得分:2)

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

要解决此问题,请在个别trim()上使用$line

答案 1 :(得分:0)

foreach ($badwords as $word) {
  if (preg_match("/\b$word\b/", $string)) {
    echo $string . ' contains bad word ' . $value;
  }
}

我假设你的txt文件每行包含一个坏词。另外要小心你的坏词不包括可能破坏正则表达式模式的字符。