Mario: In einem String alles entfernen ausser Buchstaben und Zahlen

Hallo,

ich habe hier einen String und würde darin gern alle Sonderzeichen etc. entfernen, so dass am Ende nur noch Buchstaben und Zahlen übrig sind.
Achja Leerzeichen sollen auch beibehalten werden.

z.B.

$str="Hallo (Welt)! 123";
// vielleicht mit einem regulären Ausdruck oder preg_replace()?
echo $str;
// gibt aus: Hallo Welt  123

Bin auch über Tipp dankbar welche PHP Funktion mir sowas erlaubt.

Danke und Gruß,
Mario

  1. Sup!

    Ja, mit einem regulären Ausdruck würde das gehen, sehr gut!

    Sieh' im Archiv und der PHP-Doku nach.

    Gruesse,

    Bio

    --
    Never give up, never surrender!!!
    1. Habe bisher mit regulären Ausdrücken nur gesucht oder mal das Gesuchte ersetzt.
      Aber etwas zu suchen und das nicht gefundene zu ersetzen stellt mich jetzt vor ein grundlegendes Verständnisproblem.

      cya

      1. hi,

        Habe bisher mit regulären Ausdrücken nur gesucht oder mal das Gesuchte ersetzt.
        Aber etwas zu suchen und das nicht gefundene zu ersetzen stellt mich jetzt vor ein grundlegendes Verständnisproblem.

        du brauchst ja auch lediglich das gefundene zu ersetzen - sorge dafür, dass dein ausdruck alles findet, was _nicht_ buchstabe oder zahl ist.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Okay das hat mir ein wenig auf die Sprünge geholfen.;-)

          Bei meinem Regex fehlt aber noch was und ich komm noch nicht drauf.

          preg_match("/[^A-Za-z0-9 ]*/",$str,$matches);

          Funktioniert solange der Ausdruck wirklich _nicht_ auf Buchstabe oder Zahl matcht. Sobald aber ein Buchstabe kommt, hört er auf zu matchen und liefert nur den Anfang zurück.
          Und was mache ich dann wenn ich in meinen $matches alle Zeichen habe die ich nicht brauche? ;)

          DANKE!
          Mario

          1. hi,

            preg_match("/[^A-Za-z0-9 ]*/",$str,$matches);

            Funktioniert solange der Ausdruck wirklich _nicht_ auf Buchstabe oder Zahl matcht. Sobald aber ein Buchstabe kommt, hört er auf zu matchen und liefert nur den Anfang zurück.
            Und was mache ich dann wenn ich in meinen $matches alle Zeichen habe die ich nicht brauche? ;)

            du wolltest doch nicht nur mat(s)chen, sondern auch ersetzen - also nimm preg_replace().

            preg_replace('/[^a-zA-Z0-9 ]/', '', $text);

            alles, was nicht buchstabe, ziffer oder blank ist, wird durch '' ersetzt.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Das war ja einfach. Manchmal denkt man einfach viel zu kompliziert.

              Tausend Dank! :D

              cya, Mario