Problem mit Badword

Subwoover

Erfahrenes Mitglied
Ich hab da folgende Badword-Systeme aber er schreibt mir zB ein Badword immer so aus:

****>
Woran liegt das?

So wird ersetzt:
PHP:
    $beitrag = nl2br($showrow->beitrag);;
    include ("replace.php");
und ein teil der replace.php:
PHP:
       $beitrag = str_replace("$data->code", "$data->replace>", $beitrag);
Ich hole mir die Badwords aus einer DB, jedoch steht dort nur zB: Hure als Badword und dann der Replace-code: ****

Hat das was mit den Breaks zu tun und wie kann ich dieses > vermeiden?


Und gibts irgendwie eine Möglichkeit wenn der Benutzer zB so HuRe schreibt dass es trotzdem ersetzt wird???
 
Na ja, ich würd mal sagen du löschst das > beim zweiten Parameter beim Aufruf von str_replace() raus. :-)

Du musst die Variablen übrigens nicht in "" einschließen.

Wenn nicht auf Groß-/Kleinschreibung geachtet werden soll, kannst du z.B. eregi_replace() verwenden.
PHP:
$beitrag = eregi_replace(quotemeta($data->code), $data->replace, $beitrag);
Wenn du automatisch immer automatisch entsprechend viele Sterne einsetzen willst, geht das z.B. so:
PHP:
$beitrag = eregi_replace(quotemeta($data->code), str_repeat("*", strlen($data->code)), $beitrag);


reima
 
Hey kuhl danke ;)

Und was genau macht der Teil: quotemeta?
Ich versteh die Docu dazu auf php.net nicht so ganz :)

Was genau macht der Befehl? Jedenfalls danke dir, jez passts *g*
 
Also dazu muss man erst mal sagen, dass eregi_replace() nicht ganz so arbeitet wie str_replace(). Mit eregi_replace() kann man nämlich vieeeel mehr machen. Und damit man diese ganzen Sonderfunktionen nutzen kann, gibt's bestimme Steuerzeichen, die man in den Suchstring schreibt. Wenn du nun aber ein Badword hast, das ein solches Steuerzeichen enthält, kann unter Umständen bei eregi_replace() entweder gar nichts oder etwas ungewolltes passieren. quotemeta() setzt nun vor alle Steuerzeichen ein '\'. Und wie du vielleicht schon weißt, 'entwertet' ein '\' das nachfolgende Zeichen (so z.B. bei "\""). Somit wird also verhindert, dass ungewollte Ersetzungen passieren. Im Regelfall kommt man auch ohne quotemeta() aus, aber sicher ist sicher ;)


reima
 
Ah ok praktisch =)

Naja mit dem ganzen ersetzen habe ich noch nie so gearbeitet :)

K danke euch ganz herzlich! Endlich weiterarbeiten am forum OHNE beschimpfungsmöglichkeiten *hrhr*
 
am forum OHNE beschimpfungsmöglichkeiten

vollkommen ohne leider so gut wie unmöglich, zur not sagt man es über bilder.
aber das nur am rande. ein "badword-system" ist schon ok, obwohl die forumuser sich allerdings besser selber am riemen reißen sollten.
 
würd ich mal nicht so behaupten. und zwar aus folgenden gründen:

1. soweit ich weiss, gibt es bereits gfxprogramme, die text in bildern erkennen - warum soll's in zukunft nicht auch so ne funktion für php geben.
2. bilder kann man sperren - einfach html rausnehmen.
3. man kann alle möglichen schreibvarianten von allen möglichen schimpfwörtern in die tabelle hauen.

-> der haken daran ist nur - der programmiercode reicht fünfmal von hier zum mond.:-) also lassma das lieber.
 
ja ganz schlau is auch zb: H u r e zu schreiben, hab auch so ne badwordfilter funktion in meinem gb, und die aus meiner klasse hatten tollen spass dran die auszutricksen.. :D
 
Original geschrieben von SilentWarrior
...1. soweit ich weiss, gibt es bereits gfxprogramme, die text in bildern erkennen - warum soll's in zukunft nicht auch so ne funktion für php geben.
...
Ich hoffe mal ganz stark, dass es sowas nicht so schnell gibt. Mein Gäsätebuch verhindert nämlich über einen Bildercode das Spamen per Script.
 
Zurück