kostenloser Webspace werbefrei: lima-city


suchen und ersetzen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    a************n

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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);
    }
    
    ?>

  4. 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...
  5. Autor dieses Themas

    a************n


    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é


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

  7. 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&hellip;

    Beitrag geändert: 3.9.2008 17:25:09 von ryanblack
  8. Autor dieses Themas

    a************n

    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...
  9. $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
  10. Autor dieses Themas

    a************n

    gibt es auch eine möglichkeit nach wort teilen zu filtern??
    also das aus
    ge(böses wort)
    ge*************
    wird ohne ge(böses Wort) extar ins array reinzu tun.

    mfg andre
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!