Elessar: Regex Problem mit \s

Hallo!
Und zwar hab ich grad ein Problem mit einem Regex. Ich hab einen String mit einem Zeichen und möchte herausfinden ob das ein Steuerzeichen ist.
Ich hab mir da ein paar Sachen angeguckt und es schließlich mit:
ereg("[\s]",$zeichen) probiert.
Was ist daran falsch. Er schlägt mir jedenfalls bei "s" und nicht bei Steuerzeichen an.
Mfg
Elessar

--
sh:( fo:) ch:{ br:> n4:° ie:% mo:} va:) de:] zu:) fl:( ss:) ls:[ js:|
  1. Hi,

    ereg("[\s]",$zeichen) probiert.
    Was ist daran falsch.

    in PHP (oder was immer das da ist) ist die Regular Expression innerhalb eines Strings enthalten. D.h. es gelten zunächst (="außen") die Regeln, die den Strings zugehörig sind - aus '"\s"' wird für die RegExp 's'. Wenn Du '\s' meinst musst Du das gleiche machen, wie bei der Ausgabe eines Strings: den Backslash escapen.

    Übrigens ist '[\s]' identisch mit '\s'. Wenn Du der Zeichenklasse keine weiteren Zeichen hinzufügst, kannst Du die eckigen Klammern also wegoptimieren.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      in PHP (oder was immer das da ist) ist die Regular Expression innerhalb eines Strings enthalten. D.h. es gelten zunächst (="außen") die Regeln, die den Strings zugehörig sind - aus '"\s"' wird für die RegExp 's'. Wenn Du '\s' meinst musst Du das gleiche machen, wie bei der Ausgabe eines Strings: den Backslash escapen.

      Übrigens ist '[\s]' identisch mit '\s'. Wenn Du der Zeichenklasse keine weiteren Zeichen hinzufügst, kannst Du die eckigen Klammern also wegoptimieren.

      Und wie muss das Ganze nun aussehen?
      Ich hab's mit
      ereg("[\s]",$zeichen)
      ereg("\s",$zeichen)
      ereg('\s',$zeichen)
      ereg("\s",$zeichen)
      ereg("[\s]",$zeichen)
      und mehr probiert, und immer trifft das auf "s" zu und nicht auf Steuerzeichen. Wo ist da mein Fehler?
      Schon mal vielen Dank
      The Dunedan

      --
      sh:( fo:) ch:{ br:> n4:° ie:% mo:} va:) de:] zu:) fl:( ss:) ls:[ js:|
      1. Hi,

        Und wie muss das Ganze nun aussehen?

        argl. Erst jetzt (sorry) sehe ich, dass Du ereg verwendest - vermutlich meinst Du preg_match. In ereg gilt keine Perl-Style-Syntax; ein Blick in die (online-)Dokumentation dieser Funktion zeigt Dir in den User-Kommentaren gleich zwei Fehler: 1.) muss ein Backslash als vier Backslashes geschrieben werden (mir ist auch nicht klar warum, IMHO ist das ein Bug), 2.) werden Whitespaces als "[[:space:]]" geschrieben.

        Ein weiterer Klick zur "richtigen" Funktion zeigt schnell, dass dort bereits ein Backslash reicht. Wenn meine Erinnerung mich nicht trügt, müssen die PHP-Entwickler dafür irgendwann etwas programmiert haben, denn IIRC war früher die handelsübliche String-Maskierung nötig.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes