• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[DISKUSSION] str_ireplace NICHT auf ersten Buchstaben im Wort

J

j-l-n

Guest
Mit folgender Funktion werden anstößige Wörter mit **** ausgeblendet.
PHP:
// $filter ist ein Array mit allen anstößigen Begriffen
foreach ($filter as $wort)
{
    $ausgabe = str_ireplace( $wort, str_repeat( "*", strlen( $wort ) ), $ausgabe);
}

Nun soll allerdings für den Beispielsatz "du bist so ein Hohlkopf" nicht wie jetzt
du bist so ein ********
ausgegeben werden, sondern der erste Buchstabe soll jeweils sichtbar sein, also
du bist so ein H*******
 
Hi,

so sollte es funktionieren:
PHP:
$wort = substr($wort, 1, strlen($wort));
$ausgabe = str_ireplace($wort, str_repeat("*", strlen($wort)), $ausgabe);


Gruß
 
Dankeschön, funktioniert perfekt!

Gehe ich dann richtig in der Annahme, das bei folgendem Code z.B. die ZWEI ersten usw. nicht ersetzt werden?
PHP:
$wort = substr($wort, 2, strlen($wort));


PS: Bitte wie immer auf "gelöst" setzen.
Und ich habe gerade gemerkt, dass ich als Präfix [Diskussion] genommen hatte. Das war ein Versehen und ist natürlich Blödsinn. Ich wollte "FRAGE" nehmen ;)
 
Zuletzt bearbeitet:
Es lohnt sich ein Blick auf substr_replace zu werfen.

PHP:
$wort = 'Murx';
$out = substr_replace($wort,str_repeat( "*", strlen( $wort )),1);

$out: string(5) "M****"

LG jspit
 
substr_replace macht aber keine Suche, sondern da musst du die Position, an der etwas ersetzt werden soll, angeben...

Auch der Ansatz von rico ist nicht 100%ig stabil. Mal angenommen, mal will "Furz" zensieren. Da nur nach den letzten drei Buchstaben gesucht wird, wird auch "kurz" zensiert.

Prinzipiell ist eine einfache "Suchen und Ersetzen" Strategie im Deutschen zum Scheitern verurteilt, da zusammengesetzte Wörter schon mal ein "böses" Wort am Wörterübergang "enthalten" können (mir fällt gerade nichts Gescheites ein, aber zur Anschauung: Knappenischias). Auch sind solche Ansätze extrem einfach zu umgehen durch einfach Buchstabendreher/etwas falsche Orthographie/Zeichensubstitution.
Wenn man die Wortgrenzen (z.B. mittels RegExp) in die Definition der Wörter mit einbaut, kann man den "Filter" leicht durch zusammengesetzte Wörter umgehen.

Meiner Meinung nach, ist so eine Filterautomatik den Aufwand nicht wert, da man dann trotzdem noch redaktionell über die Einträge drüberschauen muss. (Soweit ich weiß, ist hier im Forum nichts dergleichen installiert - die Moderatoren achten hald auf den Umgangston.)
 
Zurück
Oben