Array filtern und Teile ersetzen

CoverUnder

Mitglied
Hallo,

und leider sitze ich wieder vor einem Problem /-:
Ich habe ein Kontaktformular und möchte dort gewisse Felder (Textfelder und/oder Input-Felder wie zb. Betreff, Nachricht...) nach bestimmten Wörtern filtern. Wenn jemand zum Beispiel irgendwo das Wort "bescheuert" verwendet, sollte das ersetzt werden, zum Beispiel durch "...".

Einzelne Wörter rauslöschen geht, das habe ich wie folgt realisiert:

PHP:
$filtern = "Hallo du bist echt bescheuert und dumm!";

$array = explode(" ",$filtern);

foreach ($array as $key => $value) {
    if ($value == 'bescheuert') {
        unset($array[$key]);
    }
    if ($value == 'dumm') {
        unset($array[$key]);
    }
}

$gefiltert = implode(" ", $array);

Das gibt dann richtigerweise "Hallo du bist echt und!" zurück. Aber was ist, wenn ich diese Wörter nun nicht entfernen möchte, sondern ersetzen? Ich bin noch eher neu im Gebiet der Arrays... vermutlich hab ich deshalb ein Brett vor dem Kopf - denn es will mir einfach nichts einfallen, obwohl es sicher leicht lösbar wäre /-: Würde mich daher über einen Tipp sehr freuen!

Grüße
 
Das ging ja schnell :-)
Einwandfrei - Vielen Dank! Auch für den Link mit den Array-Funktionen, da kann ich mich mehr damit auseinander setzen
 
Hi

falls es dich noch interessiert. Wenn du deinen Ansatz weiterverfolgen möchtest:

PHP:
$filtern = "Hallo du bist echt bescheuert und dumm!";

$array = explode(" ",$filtern);

foreach ($array as $key => $value) {
    if ($value == 'bescheuert') {
       $array[$key]  = "nett";
    }
    if ($value == 'dumm') {
        $array[$key] = "schlau";
    }
}

$gefiltert = implode(" ", $array);

str_replace ist zwar die bessere Methode, aber ich dachte das hier schadet auch nicht ;)
 
Aaaah - jetzt kenne ich auch meinen Fehler! Danke!
So hatte ich es auch schon versucht, nur sah meine foreach so aus:

PHP:
foreach ($array as $key => $value) {
    if ($value == 'bescheuert') {
       $value = "nett";
    }
    if ($value == 'dumm') {
        $value = "schlau";
    }
}

Natürlich kann das so nicht funktionieren *g* auf die richtige Lösung hätte ich wirklich selbst kommen können, da war ich nicht so weit entfernt... aber dazu muss ich mich wohl wirklich etwas mehr mit Arrays befassen und mich mehr einarbeiten (ich muss denken wie ein Array) :D wenn man es dann so sieht ist es wirklich logisch
 
das Problem mit explode ist, dass er Satztzeichen etc nicht suaber trennt. Auch zusammengesetzte Wörter nimmt er nicht.

'dummer Hans, du bist bescheuert!'
Da finder er mit der explode() und array-Variante weder dumm noch bescheuert

->
array(5) {
[0]=>
string(6) "dummer"
[1]=>
string(5) "Hans,"
[2]=>
string(2) "du"
[3]=>
string(4) "bist"
[4]=>
string(11) "bescheuert!"
}
 
Hmm, stimmt.
Gäbe es da eine Alternative, die besser funktioniert, oder muss man sozusagen mit den Mängeln und Nachteilen leben?
 
Da bin ich aber froh :D

Ich brauche das für die Homepage einer Bekannten, die ich sozusagen als Freundschaftsdienst und zu Übungszwecken mache - und da sollte unter anderem ein Filter gewisse Wörter (ich vermute mal Schimpfwörter) ersetzen oder komplett heraus löschen. Im Kontaktformular und im Gästebuch. Anscheinend gibt es da gewisse Rivalitäten mit anderen, so dass es nötig ist :) Wobei es ja, wenn man mich fragt, nur im Gästebuch wirklich Sinn macht, aber gut... mich fragt ja niemand :D
 
Zurück