[editor note] This example script is misleading. preg_last_error() only returns PREG_*_ERROR constants.
This function might come in handy to debug regular expressions in preg_.. calls
<?php
function pcre_error_deocde() {
switch (preg_last_error()) {
case PREG_PATTERN_ORDER:
print "Orders results so that $matches[0] is an array of full pattern matches, $matches[1] is an array of strings matched by the first parenthesized subpattern, and so on. This flag is only used with preg_match_all().\n";
break;
case PREG_SET_ORDER:
print "Orders results so that $matches[0] is an array of first set of matches, $matches[1] is an array of second set of matches, and so on. This flag is only used with preg_match_all().\n";
break;
case PREG_OFFSET_CAPTURE:
print "See the description of PREG_SPLIT_OFFSET_CAPTURE. This flag is available since PHP 4.3.0.\n";
break;
case PREG_SPLIT_NO_EMPTY:
print "This flag tells preg_split() to return only non-empty pieces.\n";
break;
case PREG_SPLIT_DELIM_CAPTURE:
print "This flag tells preg_split() to capture parenthesized expression in the delimiter pattern as well. This flag is available since PHP 4.0.5.\n";
break;
case PREG_SPLIT_OFFSET_CAPTURE:
print "If this flag is set, for every occurring match the appendant string offset will also be returned. Note that this changes the return values in an array where every element is an array consisting of the matched string at offset 0 and its string offset within subject at offset 1. This flag is available since PHP 4.3.0 and is only used for preg_split().\n";
break;
case PREG_NO_ERROR:
// do not print in this case
//print "Returned by preg_last_error() if there were no errors. Available since PHP 5.2.0.\n";
break;
case PREG_INTERNAL_ERROR:
print "Returned by preg_last_error() if there was an internal PCRE error. Available since PHP 5.2.0.\n";
break;
case PREG_BACKTRACK_LIMIT_ERROR:
print "Returned by preg_last_error() if backtrack limit was exhausted. Available since PHP 5.2.0.\n";
break;
case PREG_RECURSION_LIMIT_ERROR:
print "Returned by preg_last_error() if recursion limit was exhausted. Available since PHP 5.2.0.\n";
break;
case PREG_BAD_UTF8_ERROR:
print "Returned by preg_last_error() if the last error was caused by malformed UTF-8 data (only when running a regex in UTF-8 mode). Available since PHP 5.2.0.\n";
break;
case PREG_BAD_UTF8_OFFSET_ERROR:
print "Returned by preg_last_error() if the offset didn't correspond to the begin of a valid UTF-8 code point (only when running a regex in UTF-8 mode). Available since PHP 5.3.0.\n";
break;
case PCRE_VERSION:
print "PCRE version and release date (e.g. '7.0 18-Dec-2006'). Available since PHP 5.2.4.\n";
break;
}
}
?>
Vordefinierte Konstanten
Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
| Konstante | Beschreibung |
|---|---|
| PREG_PATTERN_ORDER | Sortiert die Ergebnisse so, dass $matches[0] ein Array von Übereinstimmungen mit dem ganzen Suchmuster ist, $matches[1] ein Array von Zeichenketten, die mit dem ersten geklammerten Teilsuchmuster übereinstimmen und so weiter. Dieses Flag wird nur bei preg_match_all() verwendet. |
| PREG_SET_ORDER | Sortiert die Ergebnisse so, dass $matches[0] ein Array des ersten Satzes von Übereinstimmungen ist, $matches[1] ein Array des zweiten Satzes von Übereinstimmungen und so weiter. Dieses Flag wird nur bei preg_match_all() verwendet. |
| PREG_OFFSET_CAPTURE | Siehe Beschreibung von PREG_SPLIT_OFFSET_CAPTURE. Dieses Flag steht ab PHP 4.3.0 zur Verfügung. |
| PREG_SPLIT_NO_EMPTY | Dieses Flag teilt der Funktion preg_split() mit, dass sie nur nicht-leere Teile zurückgeben soll. |
| PREG_SPLIT_DELIM_CAPTURE | Dieses Flag teilt der Funktion preg_split() mit, dass sie auch die eingeklammerten Ausdrücke des Trennsymbol-Musters zurückgeben soll. Dieses Flag steht ab PHP 4.0.5 zur Verfügung. |
| PREG_SPLIT_OFFSET_CAPTURE | Wenn dieses Flag gesetzt ist, wird für jede gefundene Übereinstimmung auch der dazugehörige Versatz zurückgegeben. Beachten Sie, dass dies die Rückgabewerte in einem Array dahingehend ändert, dass jedes Element ein Array ist, das aus der übereinstimmenden Zeichenkette als erstem und deren Stelle im durchsuchten Text als zweitem Element besteht. Dieses Flag steht ab PHP 4.3.0 zur Verfügung und wird nur bei preg_split() verwendet. |
| PREG_NO_ERROR | Dieses Flag wird von preg_last_error() zurückgegeben, falls kein Fehler aufgetreten ist. Es steht ab PHP 5.2.0 zur Verfügung. |
| PREG_INTERNAL_ERROR | Dieses Flag wird von preg_last_error() zurückgegeben, falls ein interner PCRE-Fehler aufgetreten ist. Es steht ab PHP 5.2.0 zur Verfügung. |
| PREG_BACKTRACK_LIMIT_ERROR | Dieses Flag wird von preg_last_error() zurückgegeben, falls das Limit der Zurückverfolgung (Backtracking) überschritten wurde. Es steht ab PHP 5.2.0 zur Verfügung. |
| PREG_RECURSION_LIMIT_ERROR | Dieses Flag wird von preg_last_error() zurückgegeben, falls das Rekursionslimit überschritten wurde. Es steht ab PHP 5.2.0 zur Verfügung. |
| PREG_BAD_UTF8_ERROR | Dieses Flag wird von preg_last_error() zurückgegeben, falls der letzte Fehler durch fehlerhafte UTF-8-Daten verursacht wurde (nur bei RegEx, die im UTF-8-Modus laufen). Es steht ab PHP 5.2.0 zur Verfügung. |
| PREG_BAD_UTF8_OFFSET_ERROR | Dieses Flag wird von preg_last_error() zurückgegeben, falls sich der Versatz nicht mit dem Anfang eines gültigen UTF-8-Codepoints deckt (nur wenn die RegEx im UTF-8-Modus ausgeführt wird). Es steht ab PHP 5.3.0 zur Verfügung. |
| PCRE_VERSION | Die PCRE-Version und das Freigabedatum (z.B. "7.0 18-Dec-2006"). Dieses Flag steht ab PHP 5.2.4 zur Verfügung. |
Vordefinierte Konstanten
Bastiaan
23-Jan-2009 01:22
23-Jan-2009 01:22
