tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von chmee
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1058
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FlaverSaver Tutorials.de Gastzugang
    Hallo liebes Forum,

    ich habe ein Problem mit Regex.
    Bei meiner Registration für neue Benutzer sollen Sonderzeichen erst ab fünf Zahlen bzw. Buchstaben erlaubt sein.

    Momentan zähle ich mit strlen die Länge des Benutzernamens, wenn der Benutzername fünf oder weniger : Zeichen hat setze ich folgenden Regex
    PHP-Code:
    $regex '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]?(\s)?)+$/'
    Wenn er mehr Zeichen hat setze ich:
    PHP-Code:
    $regex '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû:;()!?*._-]?(\s)?){4,}$/'
    Nun ist das Problem, dass zum Beispiel der Benutzername ************ (sechs Rufzeichen) gültig ist, obwohl er keine Zahlen bzw. Buchstaben enthält. Das liegt ja daran das beim zweiten Regex auch meine Sonderzeichen gültige Zeichen sind und mit gezählt werden.

    Ich habe folgenden Regex probiert, um dafür zu sorgen, dass mindestens fünf Zahlen bzw. Buchstaben verwendet werden müssen. Nur leider funktioniert er nicht.
    PHP-Code:
    $regex '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû:;()!?*._-]?(\s)?)([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]{4,})$/'
    Was muss ich also ändern, damit mindestens fünf Buchstaben vorhanden sein müssen, damit Sonderzeichen als gültig anerkannt werden?

    mfg
    Philip
     

  2. #2
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Mach doch ein Regex, dass Dir die Anzahl der Einzelfunde hergibt, also

    (1) egal, wieviele Zeichen, erstmal Funde für Zeichen [a-zA-z0-9]{1} zählen.
    (2) Wenn weniger als 6, dann muß Len mit Count übereinstimmen
    (3) Wenn länger als 5, dann muß Len-Count mindestens 5 sein.

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  3. #3
    FlaverSaver Tutorials.de Gastzugang
    Hallo,

    sehr gute Idee. Warum immer so umständlich?

    Nur wie zähle ich nun mit preg_match die Treffer? Oder könnte ich einfach
    PHP-Code:
    preg_match('muster''string'$treffer);
    echo 
    count($treffer); 
    machen?

    //Habs gerade probiert, count($treffer); gibt immer 0 zurück.

    mfg
    Philip
     

  4. #4
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    preg_match gibt doch nur einen Fund zurück. Du nimmst preg_match_all
    und solltest mit echo count($treffer[0]); die Anzahl bekommen.

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  5. #5
    FlaverSaver FlaverSaver ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    4
    Hallo,

    so dann gebe ich meinen Postings auch mal eine Persönlichkeit.

    So ich glaube ich stelle mich gerade verdammt doof an.

    Ich habe folgendes:
    PHP-Code:
    $regex '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû ]?(\s)?)+$/';
    $eingabe 'lol was soll das eig 123';

    preg_match_all($regex$eingabe$treffer );

    echo 
    'Count:'.count($treffer[0]).'<br/>Eingabe:'.$eingabe;

    echo 
    '<pre>';
    var_dump($treffer); 
    Ich bekomme aber immer nur einen Treffer zurück...

    Ich weiß nicht ob da irgendwo ein grober Schnitzer ist oder ob ich einfach gerade voll auf dem Schlauch stehe...

    Philip
     

  6. #6
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Du nimmst als Quantor ein ? (entspricht {0,1}), wogegen ich auf genau ein Zeichen beschränke {1} UND Deine Regex bezieht sich immer noch auf eine längere Sequenz (allein durch Anfang ^ und Ende $), anstatt auf einzelne Zeichen..

    PHP-Code:
    $string="DasIstEin#TEST";
    $regex="#[A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]{1}#";

    preg_match_all($regex,$string,$found);

    echo 
    "<pre>";
    var_dump($found);
    echo 
    "</pre>";

    echo 
    count($found[0])." von ".strlen($string)." sind Nichtsonderzeichen!"
    Sorry, Fehler können drin sein, habs grad so hingeschmiert..

    mfg chmee

    p.s.: Schau mal in meiner Signatur, das ist der Regex-Online-Tester, sehr feines Spielzeug zum Testen und Verstehen.

    p.p.s.: Willkommen
    p.p.p.s.: Es heißt strlen(), nicht len();
    Triple-Axe bedankt sich. 
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  7. #7
    FlaverSaver FlaverSaver ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    4
    Hey,

    Super, danke das klappt wunderbar, und es ist bis jetzt Fehlerfrei!

    Ok, den Regex Tester probiere ich dann mal aus.

    Danke fürs "Willkommen"

    Wo habe ich oder auch du len() verwendet?

    mfg
    Philip
     

  8. #8
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Ich hatte anfangs in meinem Source len() benutzt und nach nem Kurztest bemerkt, dass das echo nicht ausgeworfen wird, kurzer Blick.. Ah ja, strlen() anstatt len()..

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

Ähnliche Themen

  1. [msyql] Suche nach Buchstaben mit diakritischen Zeichen
    Von bekay im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 03.08.08, 17:17
  2. Antworten: 5
    Letzter Beitrag: 13.07.07, 13:28
  3. Antworten: 0
    Letzter Beitrag: 17.01.07, 15:40
  4. Antworten: 2
    Letzter Beitrag: 06.12.04, 12:35
  5. Antworten: 3
    Letzter Beitrag: 18.07.03, 14:51