suchen und ersetzen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
array
assoziativen array
code
ersetzen
filtern
funktion
inhalt
jemand
kleinschreibung
liste
schleife
schritt
schutz
stern
sternchen
text
tun
wissen
wort
-
ich möchte in meine gb ein wort schutz einbauen, also das wenn jemand ein wort eingibt das sich auf der "blacklist" befindet, dass das script statdessen einfach nur sternchen oder irgendwas anderes ausgibt. wichtig ist hierbei das die * immer die gleiche länge wie das orginal wort haben.
mfg andré
EDIT:
$inhalt = ereg_replace("Tja","lol",$inhalt);
das war nur ein test aber wenn auf der blacklist das wort dann klein sthet wird es nicht ersetzt und das sollte aber möglichst geschehen .
und wie erreiche ich es das die blacklist mehr als 1 wort lang ist ohne den ganzen kram 100 mal hintereinander in das script einzufügen.
Beitrag geändert: 2.9.2008 20:25:49 von andre-morillon -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Am einfachsten geht es wohl mit einem assoziativen Array und str_ireplace() (wegen der Groß- und Kleinschreibung).
<? $ar=array( 'Wort1' => '*****', 'böses_langes_wort' => '****************', ... ); foreach ($ar as $key => $val) { $text = str_ireplace($key,$val,$text); } ?>
-
Am einfachsten geht es wohl mit einem assoziativen Array und str_ireplace() (wegen der Groß- und Kleinschreibung).
<? $ar=array( 'Wort1' => '*****', 'böses_langes_wort' => '****************', ... ); foreach ($ar as $key => $val) { $text = str_ireplace($key,$val,$text); } ?>
anstatt die anzahl sterne im array anzugeben, könntest du auch in der foreach-schleife die anzahl sterne mit strlen() automatisch generieren... -
stivo schrieb:
anstatt die anzahl sterne im array anzugeben, könntest du auch in der foreach-schleife die anzahl sterne mit strlen() automatisch generieren...
und wie genau muss ich das machen??
außerdem wollte ich wissen ob es eine möglichkeit gibt bestimmte buchstabenfolgen zu ersetzen.. d.h.
böses wort
bööses wort
das ich beides verbiete ohne beides in die liste zu schreiben. geht das??
mfg andré -
stivo schrieb:
anstatt die anzahl sterne im array anzugeben, könntest du auch in der foreach-schleife die anzahl sterne mit strlen() automatisch generieren...
und wie genau muss ich das machen??
außerdem wollte ich wissen ob es eine möglichkeit gibt bestimmte buchstabenfolgen zu ersetzen.. d.h.
böses wort
bööses wort
das ich beides verbiete ohne beides in die liste zu schreiben. geht das??
mfg andré
strlen('böseswort');
etwa so? :P
Dabei sollte dann ein Int-Wert rauskommen und die Anzahl sternchen musst du dann halt stattdessen ausgeben. Ne Schleife oder sowas wirst wohl selbst hinbekommen oder? -
außerdem wollte ich wissen ob es eine möglichkeit gibt bestimmte buchstabenfolgen zu ersetzen.. d.h.
böses wort
bööses wort
Das musst du schon mit RegExp machen: Also mit der `ereg_replace()` Funktion.
$inhalt = preg_replace('/b[ö]+ses wort/', '***', $inhalt);
Ryan
Update: `preg_replace()` scheint schneller zu sein…
Beitrag geändert: 3.9.2008 17:25:09 von ryanblack -
geht das auch alles in einem schritt
also
ar=array( '[W]+[o]+[r]+[t]+[1]+' => '*****', ... ); foreach ($ar as $key => $val) { $text = str_ireplace($key,$val,$text); }
so oder so ähnlich eben... -
$ar=array( '/[W]+[o]+[r]+[t]+[1]+/' => '*****', //^ ^ Die Slashes müssen vorhanden sein //... ); foreach ($ar as $key => $val) { $text = preg_replace($key,$val,$text); }
Ja, aber du musst trotzdem die Funktion `preg_replace()` nehmen, sonst funktioniert RegEx nicht.
Ryan
Beitrag geändert: 3.9.2008 18:41:28 von ryanblack -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage