raico: schnellere Varaiante für if elseif else ?

Beitrag lesen

Mahlzeit...

ich hab einen if elseif else Code, bei dem aber die if Abfragen inzwischen verdammt lang sind...
a) wirds dadurch mit der Zeit echt unübersichtlich...
b) ist es nicht gerade mal eben einfach für meine Kollegen, die sich überhaupt nicht mit php auskennen, diese Liste an "Fehlern" mal eben zu erweitern.

Der code sieht in etwa so aus:

  
  
if (ereg("WARNUNG",$buffer){  
  
/* mach $buffer orange */  
  
} elseif (eregi("SCSI",$buffer) || eregi("is not recognized",$buffer) || eregi("null or not set",$buffer) || eregi("abnormally",$buffer) || eregi("Bad file number",$buffer) || eregi("Segmentation",$buffer) || eregi("problem",$buffer) || eregi("core",$buffer) || eregi("errno",$buffer) || eregi("error",$buffer) || eregi("failed",$buffer) || eregi("abort",$buffer) || eregi("unsuccessful",$buffer) || eregi("err_sql",$buffer) || eregi("err_backupop",$buffer) || eregi("su: Unknown id:",$buffer) || eregi("Attempting a kill on remote save",$buffer) || eregi("Access is denied",$buffer) || eregi("Unknown user name",$buffer) || ereg("Killed",$buffer) || eregi("set false or does not exist",$buffer) || eregi("no output",$buffer) || eregi("Session terminated, killing shell",$buffer) || eregi("\[NOT FOUND\]",$buffer) || eregi("inconsistent during backup",$buffer) || eregi("unable",$buffer) || eregi("used only once",$buffer) || eregi("c:\\\boot.ini operable program or batch file.",$buffer) || eregi("Command not found",$buffer) || eregi("utility session is already in use",$buffer)){  
  
/* mach $buffer rot */  
  
}  
  
echo $buffer;  
  
  
  

Wie man nun sehen kann... gibts da ne Menge zu überprüfender Fehler, die in der Variable $buffer stecken könnten.
Denn eigentlich wird dabei eine Textdatei Zeile für Zeile abgeparst die auch schon mal mehrere Megabyte groß sein kann.

Meine Idee war nun, rein der Übersicht, die Fehler einfach in eine extra Datei zu schreiben,
z.B.

  
$fehlermeldung[]="SCSI";  
$fehlermeldung[]="is not recognized";  
$fehlermeldung[]="null or not set";  
$fehlermeldung[]="abnormally";  
$fehlermeldung[]="Bad file number";  
$fehlermeldung[]="Segmentation";  
$fehlermeldung[]="problem";  
$fehlermeldung[]="core";  
$fehlermeldung[]="errno";  
$fehlermeldung[]="error";  
$fehlermeldung[]="failed";  
$fehlermeldung[]="abort";  
$fehlermeldung[]="unsuccessful";  
$fehlermeldung[]="err_sql";  
$fehlermeldung[]="err_backupop";  
$fehlermeldung[]="su: Unknown id:";  
$fehlermeldung[]="Attempting a kill on remote save";  
$fehlermeldung[]="Access is denied";  
$fehlermeldung[]="Unknown user name";  
$fehlermeldung[]="Killed";  
$fehlermeldung[]="set false or does not exist";  
$fehlermeldung[]="no output";  
$fehlermeldung[]="Session terminated, killing shell";  
$fehlermeldung[]="\[NOT FOUND\]";  
$fehlermeldung[]="inconsistent during backup";  
$fehlermeldung[]="unable";  
$fehlermeldung[]="used only once";  
$fehlermeldung[]="c:\\\boot.ini operable program or batch file.";  
$fehlermeldung[]="Command not found";  
$fehlermeldung[]="utility session is already in use";  

sie stattdessen im Hauptcode zu includen und jetzt einfach nach einlesen einer Zeile in einer for next schleife den Buffer durch diesen array zu überprüfen um dann bei einem "Treffer" einen "Fehlerwert" zu setzen...
Dann bräcuht ich in der eigentlichen if elseif else Anweisung nur die elseif fehlerwert = 1 abfrage zu machen...

nur... ist das wirklich die schnellere Lösung, bzw. die Sauberere?
Hätte jemand eine "bessere" Lösung zur Hand?