Mailinglisten-Archive |
Hallo Peter, > > Das Problem ist aber, > > wenn ein Benutzer einen ungültigen regulären Ausdruck einträgt. > > Dann stürzt mein Script ab. Um das Problem etwas zu verdeutlichen, füge ich ein kleines Beispiel-Skript bei, das überschaubar ist: ------------------------------------------------------- <?php // Ein Array wird mit ein paar Zeilen gefüllt. $zeilen[] = "Dies ist ein"; $zeilen[] = "keiner Text, der"; $zeilen[] = "nur zum"; $zeilen[] = "Testen angelegt wird."; // Ein gültiger regulärer Ausdruck wird definiert: // eine Gruppe mit zwei Elementen: nämlich e und x $suche = "[ex]"; // Die Zeilen des Arrays werden nacheinander abgearbeitet foreach ($zeilen as $zeile) { // es wird geprüft, ob ein e oder x darin vorkommt if (ereg ("$suche", $zeile)) { // falls das stimmt, wird die Zeile ausgegeben. echo "<br>$zeile"; } } ?> ------------------------------------------------------- Wenn ich das selbst erstelle, habe ich es ja in der Hand, was in $suche steht. Wenn aber in einer CGI-Anwendung ein Benutzer über ein Input-Feld in einem Formular selbst angeben darf, was er denn beispielsweise in einer Datei suchen möchte, dann könnte sein dass er nur [ex angibt. Ist aber $suche mit [ex belegt, kommt die als Fehlermeldung: Warning: ereg() [function.ereg]: REG_EBRACK in C:\apachefriends\xampp\htdocs\check.php on line 15 Das wiederum möchte ich verhindern, denn das Script selbst ist ja in Ordnung, nur eben die Benutzereingabe nicht. Das Problem ist, wie kann ich testen, dass der gewünschte reguläre Ausdruck überhaupt gültig ist? Und wenn er falsch ist, würde ich gern eine Meldung ausgeben, dass etwas damit nicht stimmt. Auf alle Fälle aber soll das Script nicht abgebrochen werden. mfg pst
php::bar PHP Wiki - Listenarchive