Supportnet Computer
Planet of Tech

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","...");

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

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:

<?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

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...

Antwort 6 von dome85

für das $i = 0

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

Antwort 9 von semi

Die gesuchten Wörter sollten reguläre Audrücke sein.
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);
?>


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: