Der Fehler
Warning: [FUNCTION]:
Compilation failed:
nothing to repeat
at offset [OFFSET]
in [FILENAME]
on line [LINE]
»Nichts da zum Wiederholen«
tritt auf, wenn im Suchmuster ein Quantifier
definiert wurde, der sich auf nicht bezieht. Vor dem Quantifier steht also
kein Ausdruck, der wiederholt werden könnte. Der Fehler tritt zum Beispiel auf,
wenn man vergessen hat, einen Quantifier, der als normales Zeichen verwendet
werden soll, zu maskieren.
Beispiele
Hier mal ein einfaches Beispiel, wo dieser Fehler auftreten wird:
<?PHP
preg_match('#?#', 'Dies könnte ein Text sein');
?>
Zugegeben, das Beispiel ist recht sinnlos, illustriert aber den Fehler ganz gut.
Der Quantifier ? bezieht sich hier auf nichts, somit kommt es zu dem Fehler.
Hier bezieht sich der Quantifer lediglich auf die Assertion (?=.),
<?PHP
preg_match('#\d+(?=.)?#', 'Dies könnte ein Text sein');
?>
was nicht erlaubt ist.
Fehlerbeseitigung
Soll ein Quantifier als normales Zeichen im Suchmuster betrachtet werden, so muss er maskiert werden. Tritt der Fehler in Verbindung mit Assertions auf, so sollte er wohl höchstwahrscheinlich innerhalb der Assertion stehen, dort ist er erlaubt. Soll der Quantifier auf das Suchmuster, welches in Verbindung mit der Assertion steht, angewendet werden, muss dieses Konstrukt als Unterausdruck definiert sein. Da Assertions nicht wirklich Platz im Suchmuster belegen, können auf sie auch keine Quantifier angewendet werden.
Verwandte Themen
- Anwendungsbeispiele
- Assertions
- Der Backslash
- Fehlermeldungen
- Metazeichen
- PHP-Funktionen
- preg_grep()
- preg_match()
- preg_match_all()
- preg_replace()
- preg_replace_callback()
- preg_split()
- Quantifier
- Unterausdrücke
Kapitelnavigation
- Letzte Änderung: 05.04.2012, 16:11:10
- © 2003 - 2012 nophia web