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