Ankündigung

Einklappen
Keine Ankündigung bisher.

Unterschied von ctype_alnum und preg_match

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unterschied von ctype_alnum und preg_match

    Überall im Netz bekommt man als Antwort auf "wie abfragen, dass es nichts anderes als Buchstaben und Zahlen sind" die Antwort preg_match. Dabei gibt es auch diese Funktion ctype_alnum, dass einen eigentlich restlos bedient. Zumindest kann man anstatt if(!preg_match("/[^a-z|^A-Z|^0-9]/", $string))) auch if(!ctype_alnum($string)) einsetzen.

    Oder gibt es etwa eine Besonderheit, warum überall trotzdem das prozesslastige preg_match benutzt wird?


  • #2
    Zitat von karthago Beitrag anzeigen
    Überall im Netz bekommt man als Antwort auf "wie abfragen, dass es nichts anderes als Buchstaben und Zahlen sind" die Antwort preg_match. Dabei gibt es auch diese Funktion ctype_alnum, dass einen eigentlich restlos bedient. Zumindest kann man anstatt if(!preg_match("/[^a-z|^A-Z|^0-9]/", $string))) auch if(!ctype_alnum($string)) einsetzen.

    Oder gibt es etwa eine Besonderheit, warum überall trotzdem das prozesslastige preg_match benutzt wird?
    1. Ist deine RegExp viel zu kompliziert:

    PHP-Code:
    preg_match("#^[0-9a-z]+$#i",$src); 
    2. Vermutlich ist Preg_match einfach bekannter als die ctype Befehle, ansonsten würde ich dafür keinen Grund finden.

    cu
    Grüße
    Destruction
    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

    Kommentar


    • #3
      Ist deine RegExp viel zu kompliziert:
      Vor allem gehören keine Pipes (Oder) in die Zeichenklassen.
      Zumindest kann man anstatt if(!preg_match("/[^a-z|^A-Z|^0-9]/", $string))) auch if(!ctype_alnum($string)) einsetzen.
      Ist auch falsch. Der erste Ausdruck entspricht (bzw. soll, vgl. ebengesagtes): if(ctype_alnum($string)) , nicht dessen Negierung. Verneinung einer Negativsuche == Positivsuche.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Bezüglich der Regexp habt ihr recht. Sorry, dass ich das ungeprüft einfach reinkopiert habe. Habe meine eigenen Klassen (wo die Ausdrücke auch viel komplizierter sind) nicht dabei gehabt und einfach ein Google-Suchbeispiel reingesetzt.

        Trotzdem finde ich die ctype-Funktionen sehr erwähnenswert.

        Kommentar


        • #5
          Nachteile:
          - ctype ist eine Extension, die aktiviert sein muss (und es seltener ist als PCRE)
          - ctype validiert nur Strings

          Hast du mal geprueft ob es tatsaechlich schneller ist?
          "Mein Name ist Lohse, ich kaufe hier ein."

          Kommentar


          • #6
            http://static.zend.com/topics/200909...ce-Webinar.pdf
            PHP – preg_match() Alternative | JustBlogging.de
            PHP: ctype_alnum - Manual

            Da haben sich glaube ich schon einige die Mühe gemacht, zu testen. Wo preg vermieden werden kann, sollte man es auch tun.

            Kommentar


            • #7
              @karthago: Da wird etwas behauptet, aber nicht bewiesen
              "Mein Name ist Lohse, ich kaufe hier ein."

              Kommentar

              Lädt...
              X