preg_match und ränge nach punkten

turtledino

Mitglied
Abend zusammen,

ich hab hier ein kleines Problem mit preg_match, ich will überprüfen, ob die Variable $punkte z.B zwichen 830 und 814 liegt, wenn ja soll die Variable $rang auf "perfekt" gestellt werden. Folgendes habe ich dafür verwenden.
PHP:
		   if(preg_match("/[831-909]/i", $punkte))
		   { $rang = "unbeschreiblich perfekt, melde dich sofort bei mir"; }
		   elseif(preg_match("/[814-830]/i", $punkte))
		   { $rang = "perfekt"; }
		   elseif(preg_match("/[793-813]/i", $punkte))
		   { $rang = "sehr gut"; }
		   elseif(preg_match("/[768-792]/i", $punkte))
		   { $rang = "super gut"; }
		   elseif(preg_match("/[738-767]/i", $punkte))
		   { $rang = "super"; }
		   elseif(preg_match("/[703-737]/i", $punkte))
		   { $rang = "gut"; }
		   elseif(preg_match("/[663-702]/i", $punkte))
		   { $rang = "nur durchschnittlich"; }
		   elseif(preg_match("/[618-662]/i", $punkte))
		   { $rang = "noch befriedigend"; }
		   elseif(preg_match("/[568-617]/i", $punkte))
		   { $rang = "noch akzeptierbar"; }
		   elseif(preg_match("/[513-567]/i", $punkte))
		   { $rang = "noch ausreichend"; }
		   elseif(preg_match("/[453-512]/i", $punkte))
		   { $rang = "nicht mehr ausreichend"; }
		   elseif(preg_match("/[388-452]/i", $punkte))
		   { $rang = "ausbaufähig"; }
		   elseif(preg_match("/[0-387]/i", $punkte))
		   { $rang = "hoffnungslos"; }
		   else
		   { $rang = '<font color="red">Fehler!</font>'; }
Nun ist mir aber sehr schnell klar geworde, dass es so nicht klappt. Nur arbeite ich hier zum zweiten mal mit einem regulären Ausdruck und habe überhauptkeine Ahnung wie das gehen soll. Es währe nett, wenn mir einer helfen könnte, oder vielleicht eine bessere Lösung parat hat.
Vielen Dank im vorraus.
Axel
 
Kleine Frage: Warum verwendest du dafür Strings? Mit Integern geht das doch viel einfacher, da brauchst du auch keine komplizierten PREGs, sondern einfach nur einen Zahlenvergleich:
PHP:
if (831 <= $punkte <= 909) {
    $rang = 'unbeschreiblich perfekt, melde dich sofort bei mir';
} elseif (814 <= $punkte <= 830) {
    $rang = 'perfekt';
} elseif {793 <= $punkte <= 813) {
    // usw.
 
Zurück