禁止的单词申请

时间:2012-02-24 17:56:04

标签: php

这是我尝试创建禁止的单词工具,但在最后一步我得到错误。

1 - 创建简单表单以输入要禁止的单词(ban.php)

<form name="form" method="post" action="add.php">
    <textarea name="bad" id="bad"></textarea>
    <input type="submit" name="submit" id="submit" size="12" value="submit">
</form>

2 - 现在将通过db(add.php)发布它

//DB Connection
require_once("config.php");
$bad = $_POST['bad'];
$bad = mysql_real_escape_string($bad);
$bad = nl2br($bad);
$bad = explode("<br />",$bad);
foreach ($bad as $value)
{
    $sql = "update my_table set words='$value'";
    mysql_query($sql, $conn) or die(mysql_error());
}
echo "Done words added";

3-现在该如何申请!检查这个我不能做的地方! 我想在$test="shit";时说,如果$test == any of the words added然后给出禁止的消息,如果没有,则给出通过的消息。

<?php
//DB Connection
require_once("config.php");
//example
$test = "shit";
$qry = "select * from my_table";
$result = mysql_query($qry) or die($qry);
$line = mysql_fetch_array($result);
$words = nl2br($line['words']);
$words = str_replace('<br />', '', trim($words));
if ($test == $words) 
{
    echo "bannd";
} 
else 
{
    echo "passed";
}

问题是我不知道如何将$test与添加的每个单词进行比较,因为所有单词都存储在db中

INSERT INTO `my_table` VALUES (1, 'bad\r\nshit\r\ndrugs');

所以任何帮助〜谢谢

4 个答案:

答案 0 :(得分:1)

例如,

从数据库中获取数组中的所有结果。

$bannedWords = array('shit', 'bannedword2', 'banned word 3');

然后你就可以这样检查一下。

if(in_array($word, $bannedWord)) {
    //Banned word Found
} else {
    //No Banned word found
}

P.S:您应该重新考虑设计数据库表,了解如何存储被禁词的记录。最好将一条记录存储在一行中。例如。

enter image description here

通过这种方式,您可以更轻松地保存记录。

答案 1 :(得分:1)

您的数据库设计至少会破坏第一个数据库常规格式(http://en.m.wikipedia.org/wiki/First_normal_form)。更具体地说,它打破了原子性,意味着关系(表)中的条目不是原子的。例如,如果您有表格条目,那就是

  • drug(id 1)
  • 狗屎(身份证2)

之后,比较是直截了当的。

答案 2 :(得分:0)

使用str_replace()函数

用一些文字替换禁止的单词数组,例如 * * 在任何与您禁止的单词数组相匹配的文本中

答案 3 :(得分:-2)

也许你应该尝试在单独的表中存储单词?我想,这会更有意义。这样做,您需要生成一个&#34; SELECT * FROM bad_words WHERE word = ...&#34;查询,或类似的东西。 否则,你只需要拆分你从数据库获得的字符串,然后比较循环结果的$ test变量。