Sascha Müller: Zeichenkette von "Bad-Words" bereinigen no Case-Sensitive

Hallo,

folgende Anweisung bereinigt bei mir eine Zeichenkette von "Bad-Words":

foreach $item (@badwords)
{
 $DATA{'msg'}=~s/$item//g
}

In @badwords stehen die Wörter, die aus $DATA{'msg'} gelöscht werden sollen. Leider ist diese Funktion Case-Sensitive, so dass zwar das Wort "sex" gelöscht wird, das Wort "Sex" aber nicht, zum Beispiel.

Wahrscheinlich ist es eine Kleinigkeit, diese Funktion so umzustricken, dass das trotzdem funktioniert, aber ich finde keine Info darüber.

Übrigens, in $DATA{'msg'} dürfen zum Schluss nicht nur kleine Buchstaben enthalten sein. Der Eintrag soll ja später wieder originalgetreu geschrieben werden. Es scheidet also aus, die Zeichenkette einfach in Kleinbuchstaben umzuwandeln. Das hätte ich nämlich hinbekommen. :-(

Vielen Dank für alle Hilfe.

Ciao
Sascha

  1. Hi,

    ich finde keine Info darüber.

    dann solltest Du in

    perldoc perlre

    mal nach "i"s Ausschau halten :-)

    Cheatah

    1. Hi,

      ich finde keine Info darüber.

      dann solltest Du in

      perldoc perlre

      mal nach "i"s Ausschau halten :-)

      Cheatah

      Wo finde ich das? Bitte einen Link!

      Danke!!!

      1. Hi,

        Wo finde ich das?

        auf Deiner Festplatte, direkt neben Perl.

        Bitte einen Link!

        file:///C:/Windows/system/cmd.exe%20/K%20%22perldoc%20perlre%22

        Cheatah ;-)

        1. Hi,

          Wo finde ich das?

          auf Deiner Festplatte, direkt neben Perl.

          Bitte einen Link!

          file:///C:/Windows/system/cmd.exe%20/K%20%22perldoc%20perlre%22

          Cheatah ;-)

          Sorry, ich habe kein Perl auf meinem PC installiert. Finde ich das auf dem WebServer auch?

          1. Hi,

            Wo finde ich das?

            auf Deiner Festplatte, direkt neben Perl.

            Bitte einen Link!

            file:///C:/Windows/system/cmd.exe%20/K%20%22perldoc%20perlre%22

            Cheatah ;-)

            Sorry, ich habe kein Perl auf meinem PC installiert. Finde ich das auf dem WebServer auch?

            http://www.perldoc.com/perl5.6.1/pod/perlre.html

            Aber eigentlich meint Cheatah, daß Du hinter deine Substitution einfach ein "i" setzen sollst.

            $data{'whatever'}=~s/$badword//gi;

            Alexander

            1. Hi,

              Wo finde ich das?

              auf Deiner Festplatte, direkt neben Perl.

              Bitte einen Link!

              file:///C:/Windows/system/cmd.exe%20/K%20%22perldoc%20perlre%22

              Cheatah ;-)

              Sorry, ich habe kein Perl auf meinem PC installiert. Finde ich das auf dem WebServer auch?

              http://www.perldoc.com/perl5.6.1/pod/perlre.html

              Aber eigentlich meint Cheatah, daß Du hinter deine Substitution einfach ein "i" setzen sollst.

              $data{'whatever'}=~s/$badword//gi;

              Alexander

              Hallo Alexander,

              danke! ;-) Es war mir fast klar, dass das nicht die Welt sein kann!

              Ciao

              Sascha

  2. Moin!

    foreach $item (@badwords)
    {
    $DATA{'msg'}=~s/$item//g
    }

    In @badwords stehen die Wörter, die aus $DATA{'msg'} gelöscht werden sollen. Leider ist diese Funktion Case-Sensitive, so dass zwar das Wort "sex" gelöscht wird, das Wort "Sex" aber nicht, zum Beispiel.

    Ich kann mir so garnicht vorstellen, daß du mit dieser Funktion das Wort "Busexpress" zu "Bupress" verkürzen willst. Oder "Sextant" zu "tant". ;)

    Und wenns ganz dumm kommt, dann kürzt du sogar doppelt raus, weil das erste vermeintliche Badword rausfliegt, und dadurch an der Schnittstelle ein zweites Badword entsteht.

    - Sven Rautenberg

    1. Moin!

      foreach $item (@badwords)
      {
      $DATA{'msg'}=~s/$item//g
      }

      In @badwords stehen die Wörter, die aus $DATA{'msg'} gelöscht werden sollen. Leider ist diese Funktion Case-Sensitive, so dass zwar das Wort "sex" gelöscht wird, das Wort "Sex" aber nicht, zum Beispiel.

      Ich kann mir so garnicht vorstellen, daß du mit dieser Funktion das Wort "Busexpress" zu "Bupress" verkürzen willst. Oder "Sextant" zu "tant". ;)

      Und wenns ganz dumm kommt, dann kürzt du sogar doppelt raus, weil das erste vermeintliche Badword rausfliegt, und dadurch an der Schnittstelle ein zweites Badword entsteht.

      • Sven Rautenberg

      Eigentlich sollten nur ganze Wörter gelöscht werden, oder? Das ist eine gute Theorie, gleich mal testen.
      Stimmt, du hast Recht, er kürzt auch ganze Worte. Hmmm, aber wie vorhin schon erwähnt, durch den "Zurück-Button" kann derjenige seinen Text noch einmal überarbeiten.

  3. Hallo,

    da wir ja so ein bissel Atelier hier haben, noch eine Anmerkung an der direkten Frage vorbei, aber "über Deine Schulter schauend" ausgesprochen. Was für einen Sinn haben solche Badwordlisten eigendlich? Sicherlich eine schöne Übungsaufgabe beim Programieren, aber ansonsten? Wenn jemand, sagen wir einmal in meinem Gästebuch, schreiben würde : "das ist aber eine verfickt geile Seite, besser als jede Sexseite, heilige scheisse noch mal" würde ich persönlich das gerne stehen lassen. Wenn aber jemand schreibt. "Herr H(gelöscht jetzt) war der beste führer unseres Volkes" must Du schon eine clevere badwort-Entfernroitiene schreiben, um diesen Unsinn auszugrenzen.

    Die beste Badwort-Funktion ist immer noch die persönliche Nachsorge, ansonsten sehe ich keinen so großen Sinn in diesen Dingern.

    Nur ne ungefragte persönliche Meinung, verfickt noch mal ;-))))

    Chräcker

    http://www.Stempelgeheimnis.de

    1. Hallo,

      da wir ja so ein bissel Atelier hier haben, noch eine Anmerkung an der direkten Frage vorbei, aber "über Deine Schulter schauend" ausgesprochen. Was für einen Sinn haben solche Badwordlisten eigendlich? Sicherlich eine schöne Übungsaufgabe beim Programieren, aber ansonsten? Wenn jemand, sagen wir einmal in meinem Gästebuch, schreiben würde : "das ist aber eine verfickt geile Seite, besser als jede Sexseite, heilige scheisse noch mal" würde ich persönlich das gerne stehen lassen. Wenn aber jemand schreibt. "Herr H(gelöscht jetzt) war der beste führer unseres Volkes" must Du schon eine clevere badwort-Entfernroitiene schreiben, um diesen Unsinn auszugrenzen.

      Die beste Badwort-Funktion ist immer noch die persönliche Nachsorge, ansonsten sehe ich keinen so großen Sinn in diesen Dingern.

      Nur ne ungefragte persönliche Meinung, verfickt noch mal ;-))))

      Chräcker

      http://www.Stempelgeheimnis.de

      Mein Gästebuch hat eine Vorschaufunktion, in der die entsprechenden Wörter dann bereits gelöscht sind. So hat der User die Möglichkeit noch einmal auf "Zurück" zu klicken, und seinen Text noch einmal zu überarbeiten. Ich finde die Funktion gut, aber das kann ja jeder machen wie er möchte.

      1. Hallo,

        Ich finde die Funktion gut, aber das kann ja jeder machen wie er
        möchte.

        natürlich kann das jeder machen wie er möchte ;-) (bin heut ja mal großzügig....) mich würde nur der Sinn interesieren. Warum möchtest Du so eine Funktion haben? Ich würde zumindest nach dem löschen von Worten nicht mehr in das Buch eintragen wollen....

        Chräcker

        http://www.Stempelgeheimnis.de