_micha_: zeichen aus einem string heraussuchen

also ich hab ein textfeld bei dem sonderzeichen nicht eingegeben werden dürfen..

ich dachte ich lös das so:

<?PHP

if(ereg ("[!"§$$%&/()=?{[]}]",$textfeldname)) {
  echo "buuuuuuh";}
  else
  {
  echo "juhuu";
  }

?>

das problem sind hier wohl die zeichen..

wenn ich statt if(ereg ("[!"§$$%&/()=?{[]}]",$textfeldname)) dann

if(ereg ("[1234]",$textfeldname))    nehme, kommt die meldung "buuuuuh" wenn man eine der vier zahlen eingibt..

weiss jemand wie ich das problem umgehen kann?

danke :) (schon meine dritte frage seit gestern abend *g*)

  1. Hi,

    also ich hab ein textfeld bei dem sonderzeichen nicht eingegeben werden dürfen..

    definiere lieber, welche Zeichen erlaubt sind und prüfe, ob noch irgendwas anderes drin ist. Wenn Du bei Deiner Variante auch nur ein einziges Zeichen vergisst - und es gibt weitaus mehr, als auf der Tastatur stehen - kriegst Du sonst Probleme.

    wenn ich statt if(ereg ("[!"§$$%&/()=?{[]}]",$textfeldname)) dann
    if(ereg ("[1234]",$textfeldname))    nehme, kommt die meldung "buuuuuh" wenn man eine der vier zahlen eingibt..

    Ja, richtig.

    weiss jemand wie ich das problem umgehen kann?

    Nein, weil ich leider nicht weiß, wo Du darin das Problem siehst. "[1234]" ist eine Zeichenklasse, welche exakt diese vier Ziffern umfasst; selbstverständlich wird true zurückgegeben, wenn eines der Zeichen im String existiert. Was genau willst Du also?

    Cheatah

    1. definiere lieber, welche Zeichen erlaubt sind und prüfe, ob noch irgendwas anderes drin ist. Wenn Du bei Deiner Variante auch nur ein einziges Zeichen vergisst - und es gibt weitaus mehr, als auf der Tastatur stehen - kriegst Du sonst Probleme.

      danke
      ja.. klingt logisch *g*

      <?PHP

      if(!ereg ("[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-]",$huhu)) {
        echo "buuuuuuh";}
        else
        {
        echo "juhuu";
        }

      ?>

      "eigentlich" klappt es so.. geb ich ein "%" (oder irgend ein anderes zeichen was nicht in dieser liste ist) klappt es ("buuuuh").. geb ich aber "Ha%llo" ein klappt es nicht ("juhuu")  :(

      »»Was genau willst Du also?

      was ich will? eine überprüfung ob in dem textfeld die richtigen zeichen eingegeben worden sind.. um es genauer zu sagen a-z,0-9, punkt und bindestrich

      1. Hallo,

        [0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-]"

        sind evtl alle Wortzeichen gemeint? Die bekommst du mit diesem regexp: "\w". Und alle Zeichen, die nicht Wortzeichen sind: "\W".

        Deine Abfrage ist übrigens logisch falsch formuliert. Denk da nochmal drüber nach. Das Ergebnis ist in diesem Punkt ein eindeutiger Hinweis.

        Gruss,
        Kube

        1. Hi,

          [0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-]"
          sind evtl alle Wortzeichen gemeint? Die bekommst du mit diesem regexp: "\w".

          darin enthalten ist der Unterstrich, nicht jedoch Punkt und Bindestrich. Ich schlage [0-9a-zA-Z.-] vor.

          Deine Abfrage ist übrigens logisch falsch formuliert. Denk da nochmal drüber nach. Das Ergebnis ist in diesem Punkt ein eindeutiger Hinweis.

          Richtig; damit ist die gesamte Abfrage gemeint. Deine Regular Expression prüft auf _ein_ Vorkommen eines solchen Zeichens, nicht entweder auf ein Vorkommen jedes anderen Zeichens oder auf _ausschließlich_ Vorkommen dieser Zeichen. Beide Varianten lassen sich leicht formulieren, wobei ich erstere bevorzugen würde.

          Cheatah