Jump to content

Mysql language filter *** SOLVED ***


oracle259

Recommended Posts

How can i modify the language filter tutorial code to work with a mysql database instead of a flat text file. I have tried several times with no luck.

[code]<?php
function language_filter($string) {
    $obscenities = @file("path/to/your/file/foul_language.txt");
    foreach ($obscenities as $curse_word) {
        if (stristr(trim($string),$curse_word)) {
            $length = strlen($curse_word);
            for ($i = 1; $i <= $length; $i++) {
                $stars .= "*";
            }
            $string = eregi_replace($curse_word,$stars,trim($string));
            $stars = "";
        }
    }
    return $string;
}
?>  [/code]
Link to comment
https://forums.phpfreaks.com/topic/22164-mysql-language-filter-solved/
Share on other sites

I guess you first need to decide how you will store the banned words in your database?  A table for banned words then each word stored as a separate row?  or a single row entry with all the words, separated by commas or line breaks or something like that.  Once you have decided that, we can move on to making a script to check
[quote]I guess you first need to decide how you will store the banned words in your database?  A table for banned words then each word stored as a separate row?  or a single row entry with all the words, separated by commas or line breaks or something like that.  Once you have decided that, we can move on to making a script to check[/quote]

I used the first approach.. which doesnt seem to be working too well. but thats the best way to keep adding to the database over time.
Pretty much this

[code]$sql="CREATE TABLE `langfilter` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `word` varchar(225) NOT NULL default '',
  `tag` char(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM";
$result = dbQuery($sql) or do_error("Couldn't execute SQL: $sql". mysql_error());
[/code]
Give this a go, might be a bit buggy, obviously cant test it...

[code=php:0]
function language_filter($string) {
    $obsenities = mysql_query("SELECT * FROM langfilter") or die(mysql_error());
while($row = mysql_fetch_array($obsenities)){
$curse_word = $row['word'];
if (stristr(trim($string),$curse_word)) {
            $length = strlen($curse_word);
            for ($i = 1; $i <= $length; $i++) {
                $stars .= "*";
            }
            $string = eregi_replace($curse_word,$stars,trim($string));
            $stars = "";
        }
    }
    return $string;
}


[/code]
Unfortunately it did not work i think because of the missing foreach statement

[code]function language_filter($string) {
    $obsenities = mysql_query("SELECT * FROM langfilter") or die(mysql_error());



while($row = mysql_fetch_array($obsenities)){





$curse_word = $row['word'];





if (stristr(trim($string),$curse_word)) {
            $length = strlen($curse_word);
            for ($i = 1; $i <= $length; $i++) {
                $stars .= "*";
            }
            $string = eregi_replace($curse_word,$stars,trim($string));
            $stars = "";
        }
    }
    return $string;
}[/code]

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.