php单词过滤功能?

时间:2012-05-09 16:51:44

标签: php mysql sql arrays loops

我编写了这个功能

function bad_words($val){
    global $pre; 
    $sql = mysql_query("SELECT * FROM " . $pre . "BAD_WORDS") or die(mysql_error());
    $rs = mysql_fetch_assoc($sql); 
    if (mysql_num_rows($sql) > 0) { 
        $bad_words = $rs['BAD_WORD']; 
        $replace = $rs['REPLACE']; 
    } 
    $val = str_ireplace($bad_words, $replace, $val);
    return $val; 
}

BAD_WORDS Table (ID, BAD_WORD, REPLACE)


当我使用此函数时,它会替换id = 1的单词,但不会替换其他单词。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您只从表中获取第一行。你必须使用循环来迭代 结果集中的所有行。

function bad_words($val)
{
global $pre;
$sql = mysql_query("SELECT * FROM " . $pre . "BAD_WORDS") or die(mysql_error());

if (mysql_num_rows($sql) > 0) {
   while($rs = mysql_fetch_assoc($sql)) {
      $bad_words[] = $rs['BAD_WORD'];
      $replace[] = $rs['REPLACE'];
   }
}
$val = str_ireplace($bad_words, $replace, $val);
return $val;
}

答案 1 :(得分:0)

好吧,那是因为你没有遍历生成的行,你只是在第一行上执行代码。确定有一行或多行(if (mysql_num_rows($sql) > 0))后,您需要逐个循环记录并执行操作。

请查看以下内容:http://php.net/manual/en/function.mysql-fetch-array.php