Jump to content

[SOLVED] SQL swear filter


Spectre

Recommended Posts

Hey all, using an ajax chat and have the filter set up by db table to replace $before with $after...

 

 

Pretty simple, just not so sure how to make it take the before as non case sensitive so i don't have to put every combination of a word in the before column, any tips? ideas? ways to do this easily?

Link to comment
https://forums.phpfreaks.com/topic/85573-solved-sql-swear-filter/
Share on other sites

That depends on how you're doing your replacement. If you're using ereg_replace(), use eregi_replace(), if you're using preg_replace(), use the case insensitive modifier. If you're using str_replace(), use str_ireplace()

 

Of course, you'll still have users putting spaces/other symbols in between letters to get around your filter anyway.

you can use an array in something like str_replace, right? So you can have an array or words you want to filter and just one statement?

 

Indeed - but take any swear word and think of all the different ways that you could communicate that swear word without spelling it out exactly (e.g. symbols to represent letters, spaces in between, other symbols inbetween, mis-spelling etc). Now do the same for every other swear word you can think of. That's going to be one very large array.

you can use an array in something like str_replace, right? So you can have an array or words you want to filter and just one statement?

 

Indeed - but take any swear word and think of all the different ways that you could communicate that swear word without spelling it out exactly (e.g. symbols to represent letters, spaces in between, other symbols inbetween, mis-spelling etc). Now do the same for every other swear word you can think of. That's going to be one very large array.

 

It is indeed a large array, use what GingerRobots previously said (ignoring str_replace):

 

That depends on how you're doing your replacement. If you're using ereg_replace(), use eregi_replace(), if you're using preg_replace(), use the case insensitive modifier. If you're using str_replace(), use str_ireplace()

 

Of course, you'll still have users putting spaces/other symbols in between letters to get around your filter anyway.

 

The idea being ereg, preg, etc... is that it uses PATTERNS to match swear words. While I can almost guarantee that there is no perfect system for all swear words, you can get pretty darn close.

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.