tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
211
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Blabliblubs Blabliblubs ist offline Mitglied Bronze
    Registriert seit
    May 2007
    Beiträge
    34
    Hi,

    ich möchte gerne einen regulären Ausdruck für dieses Beispiel hier zusammenschnitzen:

    Beispiele:
    Muster(einfach): 0-0-0-0
    Oder: 1-1-1-1
    Oder:0-2-1-1
    Oder:1/2-1/2-1/2-1/2
    Oder:1-2-0-1/2

    Konkret bedeutet das: [0, 1/2, 1 oder 2] Binderstrich [0, 1/2, 1 oder 2] Binderstrich [0, 1/2, 1 oder 2] Binderstrich [0, 1/2, 1 oder 2]

    Minimum-Eingabe: 0-0-0(einfachster Fall) oder eben 1/2-1/2-1/2
    Maximum-Eingabe: 1/2-1/2-1/2-1/2

    Ansatz:
    PHP-Code:
    [^[0-2]/-{3}/-[0-2](/-[0-2])?$ 
    Aber damit decke ich ja nicht die einhalb zwischen den Bindestrichen ab...wie bekomme ich das hin?

    Gruß
     

  2. #2
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    So vielleicht?
    PHP-Code:
    $regex '/(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)/'
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  3. #3
    Blabliblubs Blabliblubs ist offline Mitglied Bronze
    Registriert seit
    May 2007
    Beiträge
    34
    Bei 0-0-0-0 kommt bei mir schon ein Fehler mit deiner Version. Klappt nicht wirklich.

    Aber bei 1/2-1/2-1/2-1/2 klappt es..hmmm
     

  4. #4
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Deinen Fehler kann ich nicht bestätigen:
    Code PHP:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?php
    // Text bzw. String der durchsucht werden soll  
    $string = '0-0-0-0'; 
     
    // das Suchmuster mit Delimiter und Modifer (falls vorhanden)  
    $pattern = '/(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)/'; 
     
    // RegEx mit preg_match() auswerten  
    preg_match($pattern, $string, $array); 
     
    // formatierte Ausgabe  
    echo '<pre>';
    print_r($array);
    echo '</pre>';
    ?>

    Ergibt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    [COLOR=#ff0000]Array[/COLOR]
    (
        [0] [COLOR=#0000ff]=>[/COLOR] 0-0-0-0
        [1] [COLOR=#0000ff]=>[/COLOR] 0
        [2] [COLOR=#0000ff]=>[/COLOR] 0
        [3] [COLOR=#0000ff]=>[/COLOR] 0
        [4] [COLOR=#0000ff]=>[/COLOR] 0
    )
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  5. #5
    Blabliblubs Blabliblubs ist offline Mitglied Bronze
    Registriert seit
    May 2007
    Beiträge
    34
    Sollte dann wohl auch mit ereg() klappen oder?
    PHP-Code:
    $Reg "/(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)/";
            
            foreach(
    $_POST['Dosierschema'] as $key => $value) {
             if(
    $value != '' and $value != '999' and $value !='b.B.'){        
                if ( 
    ereg($Reg$value) ){
                
    $Ausgabe .= 'Dosierschema Angabe ohne Fehler (evtl. auch alle leer).';
                } else {
                
    $Fehler .= 'Fehler!</br>';
                
    $FailDosier '*Die Dosierschema Eingabe entspricht nicht der vorgegebenen Formatierung!';
                }
            }
             } 
    Da kommt bei mir ne Fehlermeldung. Also "FailDosier" wir aufgerufen...
     

  6. #6
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Von ereg() trenne dich mal ganz schnell, da diese Funktion(en) als veraltet gilt/gelten und durch die durch die preg_*-Funktionen abgelöst wird/werden.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  7. #7
    Blabliblubs Blabliblubs ist offline Mitglied Bronze
    Registriert seit
    May 2007
    Beiträge
    34
    *küsschen auf die backe )))))))

    klappt nun wunderbar!

    PHP-Code:
        $Reg "/(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)/";
            
            foreach(
    $_POST['Dosierschema'] as $key => $value) {
             if(
    $value != '' and $value != '999' and $value !='b.B.'){        
                if ( 
    preg_match($Reg$value) != '0' ){
                
    $Ausgabe .= 'Dosierschema Angabe ohne Fehler (evtl. auch alle leer).';
                } else {
                
    $Fehler .= 'Fehler!</br>';
                
    $FailDosier '*Die Dosierschema Eingabe entspricht nicht der vorgegebenen Formatierung!';
                }
            }
             } 
    Oppps...ein kleiner Schönheitsfehler scheint da noch drinn zu sein. Funktioniert bei dir das hier?
    --> 0-0-0 ?

    also der letzte Teil (- und (0, 1, 1/2 oder 2) müsste optional sein.

    Derartiges funktioniert nicht ganz
    PHP-Code:
    $Reg "/(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)-(0|1\/2|1|2)?/";
            
            foreach(
    $_POST['Dosierschema'] as $key => $value) {
             if(
    $value != '' and $value != '999' and $value !='b.B.'){        
                if ( 
    preg_match($Reg$value) != '0' ){
                
    $Ausgabe .= 'Dosierschema Angabe ohne Fehler (evtl. auch alle leer).';
                } else {
                
    $Fehler .= 'Fehler!</br>';
                
    $FailDosier '*Die Dosierschema Eingabe entspricht nicht der vorgegebenen Formatierung!';
                }
            }
             } 
    Also mit dem Fragezeichen für optinal.
     

Ähnliche Themen

  1. regulärer ausdruck
    Von anyany im Forum PHP
    Antworten: 8
    Letzter Beitrag: 30.11.07, 13:53
  2. Regulärer Ausdruck
    Von Metha im Forum PHP
    Antworten: 5
    Letzter Beitrag: 27.05.07, 14:42
  3. Regulärer Ausdruck
    Von Centin im Forum Coders Talk
    Antworten: 2
    Letzter Beitrag: 06.11.06, 19:24
  4. Regulärer Ausdruck für <img>
    Von Sniperkiller im Forum PHP
    Antworten: 3
    Letzter Beitrag: 13.02.05, 13:57
  5. Regulärer Ausdruck
    Von Benzol im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 28.01.05, 11:58