phpbar.de logo

Mailinglisten-Archive

Re: [php] Gül tigkeit von r egulären Ausdrücken

Re: [php] Gül tigkeit von r egulären Ausdrücken

stahl at germanistik.uni-wuerzburg.de stahl at germanistik.uni-wuerzburg.de
Mon Mai 2 12:01:09 CEST 2005


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