Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Mit PHP Zensur-Funktion einrichten?
Frage
Hallo,
ich möchte in ein Formular eine Zensur-Funktion integrieren. Ich stelle mir das so vor, dass alle unsittlichen Wörter in der Datei zensur.txt gespeichert werden.
Das derzeitige (Gästebuch-)Script sieht so aus:
-post.php = Formular
-postaction.php = Script, welches die Form-Daten in MySQL-DB schreibt
-gbdanke.php = Bedankungsseite für den Eintrag ins Gästebuch
Alles ist bereits funktionsfähig, was muss ich machen, damit alle "bösen" Wörter, wie hier im SN, durch ein Z oder ein anderes Zeichen zensiert wird?
Gruß,
Jens
Antwort 1 von dome85
lässt sich mit einer schleife erledigen:
$array = ("verbotenes wort1","wort2","...");
das ganze wiederholt sich, bis alle wörter, die in dem array stehen im $text durchsucht wurden.
müsste eigentlich funktionieren, wenn nicht, schick mir ne mail!
gruß
dome85
http://www.bigtown.de
$array = ("verbotenes wort1","wort2","...");
for($i = 1, reset($array); $i<count($array); $i++){
$text = ereg_replace("$array[$i]","***",$text); // "bösen" Wörter killen
}
das ganze wiederholt sich, bis alle wörter, die in dem array stehen im $text durchsucht wurden.
müsste eigentlich funktionieren, wenn nicht, schick mir ne mail!
gruß
dome85
http://www.bigtown.de
Antwort 2 von MusicCreator
Hi,
mit einer Schleife...hm.....darauf bin ich nicht gekommen ;-) Gleich mal probieren, wenn es nicht klappt, frag ich noch einmal nach.
Danke,
Jens
mit einer Schleife...hm.....darauf bin ich nicht gekommen ;-) Gleich mal probieren, wenn es nicht klappt, frag ich noch einmal nach.
Danke,
Jens
Antwort 3 von MusicCreator
Also ich habe den Code einmal in die gbbookaction.php kopiert, da dies ja das Script ist, welches das Formular verarbeitet bzw. bearbeitet. Das sieht jetzt so aus:
Das Wort (wort1) wird jedoch ohne Änderung durch ereg_replace übernommen und unzensiert angezeigt.
Ich hab sicher irgendetwas falsch gemacht, nur was?
<?php
$array = ("wort1");
for($i = 1, reset($array); $i<count($array); $i++){
$content = ereg_replace("$array[$i]","Z",$content); // "bösen" Wörter killen
}
$mysql[host] = "datenbankserver";
$mysql[user] = "user";
$mysql[pw] = "pass";
$mysql[db] = "db0112021";
mysql_connect($mysql[host], $mysql[user], $mysql[pw]) or die(mysql_error());
mysql_select_db($mysql[db]) or die(mysql_error());
mysql_query("INSERT INTO gbook(id,name,content,email,ip) VALUES('$id','$name','$content','$email','$ip')") or die(mysql_error());
header("LOCATION: main.php?site=gbdanke");
?>
Das Wort (wort1) wird jedoch ohne Änderung durch ereg_replace übernommen und unzensiert angezeigt.
Ich hab sicher irgendetwas falsch gemacht, nur was?
Antwort 4 von dome85
for($i = 1,
ich glaub ich hab was falsch gemacht! das $i muss eigentlich 0 sein, da die schleife eigentlich immer bei 0 beginnt. probiers einfach mal aus, indem du noch ein zwei wörter in den array schreibst! ich versuchs auch noch kurz!
gruß
dome85
ich glaub ich hab was falsch gemacht! das $i muss eigentlich 0 sein, da die schleife eigentlich immer bei 0 beginnt. probiers einfach mal aus, indem du noch ein zwei wörter in den array schreibst! ich versuchs auch noch kurz!
gruß
dome85
Antwort 5 von MusicCreator
Ich hab die 1 mal durch eine 0 ersetzt und erstmal ein Wort im Array stehengelassen. Nunja....zensiert wird etwas, halt nur der erste Buchstabe und nicht das ganze Wort ;-)
Wenn ich mehrere Wörter in den Array schreibe - wie du in Deiner ersten Antwort - kommt die Meldung unexpected "," bla bla, was mich wundert...
Wenn ich mehrere Wörter in den Array schreibe - wie du in Deiner ersten Antwort - kommt die Meldung unexpected "," bla bla, was mich wundert...
Antwort 6 von dome85
für das $i = 0
und $array = array("verbotenes wort1","wort2");
da muss an den anfang noch ARRAY!!
und $array = array("verbotenes wort1","wort2");
da muss an den anfang noch ARRAY!!
Antwort 7 von dome85
$array = array("wort1","wort2");
for($i = 0, reset($array); $i<count($array); $i++){
$content = ereg_replace("$array[$i]","Z",$content);
}
meine lösung, so funktioniert es eigentlich...
Antwort 8 von MusicCreator
Tja, das ist der Nachteil. In den Ferien hab ich mein Hirn abgeschaltet ;-) Jetzt läuft es, danke für Deine Hilfe dome85.
Bye,
Jens
Bye,
Jens
Antwort 9 von semi
Die gesuchten Wörter sollten reguläre Audrücke sein.
Hier ein Beispiel.
Hier ein Beispiel.
<?php
$text = "Sch.. auf DeskTop ist cool.";
$search = array(
"'sch[\.\W]*auf\W'i",
"'desk'i"
);
$replace = 'Z';
echo preg_replace($search, $replace, $text);
?>