Цензуриране на думи от db

djman

Registered
Здравейте!

Имам таблица badwords с полета in и out, съответно - in - думата, която се търси, out - думата, с която се замества.
Отделно имам форма, която добавя текст в db.
Как при добавяне на този текст да се прави проверка за наличието на "in" думи в текста и ако има, да се заменят с "out" думите?

Благодаря! :)
 
нещо такова
Код:
$find = explode(" ", str_replace('  ', ' ', preg_replace('/[^A-Za-zа-яА-Я0-9]/', ' ', $text)));
$replace = array();
$result = mysql_query("SELECT out FROM badwords WHERE in IN ('" . implode("', '", $find) . "');
while($row = mysql_fetch_assoc($result))
{
 $replace[] = $row['out'];
}
mysql_free_result($result);
$text = str_replace($find, $replace, $text);
 
не е сложно забравих, че съм ти писал
Код:
$find = explode(" ", str_replace('  ', ' ', preg_replace('/[^A-Za-zа-яА-Я0-9]/', ' ', $text))); 
$replace = array(); 
$result = mysql_query("SELECT `out`, `in` FROM badwords WHERE `in` IN ('" . implode("', '", $find) . "')"); 
$find = array();
$total = 0;
while($row = mysql_fetch_assoc($result)) 
{ 
 $find[] = $row['in'];
$replace[] = $row['out'];
$total++;
} 
mysql_free_result($result); 
if ($total)
{
$text = str_replace($find, $replace, $text);}
 
$result = mysql_query("SELECT `out`, `in` FROM badwords WHERE LOWER(`in`) IN ('" . implode("', '", array_map('strtolower', $find)) . "')");
 
ами записите проверяваш, кодировката на страницата и в база данни
ако е utf-8 няма да се ползва strtolower функцията ами mb_strtolower
 

Back
Горе