ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
211
211
EMPFEHLEN
-
22.04.10 18:16 #1
- 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:
Aber damit decke ich ja nicht die einhalb zwischen den Bindestrichen ab...wie bekomme ich das hin?PHP-Code:[^[0-2]/-{3}/-[0-2](/-[0-2])?$
Gruß
-
22.04.10 18:24 #2
- 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.
-
22.04.10 18:30 #3
- 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
-
22.04.10 18:41 #4
- 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.
-
22.04.10 18:46 #5
- Registriert seit
- May 2007
- Beiträge
- 34
Sollte dann wohl auch mit ereg() klappen oder?
Da kommt bei mir ne Fehlermeldung. Also "FailDosier" wir aufgerufen...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!';
}
}
}
-
22.04.10 18:49 #6
- 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.
-
22.04.10 18:53 #7
- Registriert seit
- May 2007
- Beiträge
- 34
*küsschen auf die backe
)))))))
klappt nun wunderbar!
Oppps...ein kleiner Schönheitsfehler scheint da noch drinn zu sein. Funktioniert bei dir das hier?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!';
}
}
}
--> 0-0-0 ?
also der letzte Teil (- und (0, 1, 1/2 oder 2) müsste optional sein.
Derartiges funktioniert nicht ganzAlso mit dem Fragezeichen für optinal.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!';
}
}
}
Ähnliche Themen
-
regulärer ausdruck
Von anyany im Forum PHPAntworten: 8Letzter Beitrag: 30.11.07, 13:53 -
Regulärer Ausdruck
Von Metha im Forum PHPAntworten: 5Letzter Beitrag: 27.05.07, 14:42 -
Regulärer Ausdruck
Von Centin im Forum Coders TalkAntworten: 2Letzter Beitrag: 06.11.06, 19:24 -
Regulärer Ausdruck für <img>
Von Sniperkiller im Forum PHPAntworten: 3Letzter Beitrag: 13.02.05, 13:57 -
Regulärer Ausdruck
Von Benzol im Forum .NET ArchivAntworten: 3Letzter Beitrag: 28.01.05, 11:58





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren