我正在建立一个发布广告的网站,在一个添加广告系列(广告)的部分,我需要阻止广告系列标题中的某些坏词。所以我在广告客户添加广告系列时检查了这些标题。这些坏词以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";
}
答案 0 :(得分:2)
通常,问题来自文件中留下的尾随空格。
要解决此问题,请在个别trim()
上使用$line
。
答案 1 :(得分:0)
foreach ($badwords as $word) {
if (preg_match("/\b$word\b/", $string)) {
echo $string . ' contains bad word ' . $value;
}
}
我假设你的txt文件每行包含一个坏词。另外要小心你的坏词不包括可能破坏正则表达式模式的字符。