2012-07-21 56 views
0

我正在做一個發佈廣告的網站,在添加廣告系列(廣告)的部分中,我需要阻止廣告系列標題中的某些壞字。所以我在廣告客戶添加廣告系列時檢查了這些標題。這些badwords以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

你試過調試嗎? (迴應兩條線,看看它是否真的匹配?)另外,嘗試'trim()'你的線。 – 2012-07-21 07:33:30

+0

@Truth感謝它的工作。我在檢查前使用trim()。 – Ramya 2012-07-21 07:52:12

回答

2

通常,問題來自文件中留下的尾隨空格。

要解決此問題,請在個人$line上使用trim()

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

我假設你的txt文件每行包含一個壞字。另外要小心你的壞字不要包含可能會破壞正則表達模式的字符。