[PHP] einfache Regex-Abfrage

Dieses Thema im Forum "Webentwicklung" wurde erstellt von toschk, 15. November 2011 .

Schlagworte:
  1. 15. November 2011
    einfache Regex-Abfrage

    Hi, ich möchte per regex einen String auf Kleinbuchstaben testen.
    Meine abfrage schaut wie folgt aus

    PHP:
    preg_match ( '/[^a-z]*/' 'aaaa' $matches );
    print_r ( $machtes );
    Leider gibt preg_match immer 1 zurück und zeigt mir dieses Ergebnis-Array an.

    HTML:
    Array
    (
     [0] =>
    )
    
    Was mache ich falsch????
     
  2. 15. November 2011
    AW: einfache Regex-Abfrage

    PHP:
    <? php
    preg_match
    ( '/^[a-z]*$/' 'aaaa' $matches ); 
    print_r ( $matches );  
    ?>
    Das ^ innerhalb von [] negiert den Ausdruck.. Sprich du erlaubst mit deinem Regex alles außer Kleinbuchstaben ;-)
    Und um ausschließlich kleine Buchstaben in dem ganzen String zuzulassen, musste ein ^ was in dem Fall den Zeilenanfang und ein $ was das Zeilenende darstellt..

    MfG
     
  3. 15. November 2011
    AW: einfache Regex-Abfrage

    Durch den * reagiert dein RegExp auch auf einen Leeren String, daher Tausche den * gegen ein +

    PHP:
    <? php
    preg_match
    ( '/^[a-z]+$/' 'aaaa' $matches ); 
    print_r ( $matches );  
    ?>
     
  4. 15. November 2011
    AW: einfache Regex-Abfrage

    mag wer benchmarken? ^^
    sollte ca. 3x schneller sein

    PHP:
    if ( ctype_lower ( $str )) {
      
    // yada yada yada
    }
     
  5. 15. November 2011
    AW: einfache Regex-Abfrage


    Mmh wusst ich's doch, dass das * da nicht ganz richtig ist... Aber aufs + bin ich nicht gekommen
     
  6. 15. November 2011
    AW: einfache Regex-Abfrage

    Ok, danke hat mir alles weitergeholfen.
    Hab mich am Anfang falsch ausgedrückt da ich nicht-kleinbuchstaben-zeichen finden wollte um abzubrechen, da es mir ja ansonsten kleinbuchstaben sucht.
     
  7. 16. November 2011
    AW: einfache Regex-Abfrage

    Yepp,
    0m0.732s zu 0m0.187s.
     
  8. 16. November 2011
    AW: einfache Regex-Abfrage

    PHP:
    <? php
    preg_match
    ( '/^[^a-z]+$/' 'aaaa' $matches ); 
    print_r ( $matches );  
    ?>
    Ist jetzt ungetestet, sollte aber funzen..
    Hättest du dir auch aus meinem vorherigen Post zusammenbauen können ;-)
     
  9. 16. November 2011
    AW: einfache Regex-Abfrage

    Den Benchmark "Nativ vs. RegExp" hättest ihr euch sparen können

    Wie Murdoc schon schreibt heißt die Lösung ctype_lower(), stellt man ein ! davor wird das Ergebnis umgedreht und man hat was man wollte.


    PHP:
    <? PHP

    $str 
    'aaaa' ;

    if ( !
    ctype_lower ( $str )) {
      
    // yada yada yada
    }
     
  10. 16. November 2011
    AW: einfache Regex-Abfrage

    Gut kann man auch machen..
    Das geht jedoch nur, wenn du auch wirklich NUR Großbuchstaben haben willst und keine Sonderzeichen etc...
    Oder anstatt das zu negieren, kannste auch gleich ctype_upper() nehmen..

    MfG
     
  11. 17. November 2011
    AW: einfache Regex-Abfrage

    Wieso? Ich hoffe Du gehst nicht davon aus, dass wir glaubten, dass Nativ nicht schneller sei. Hier geht's nur darum, /wieviel/ schneller.
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.