CXVII. Reguläre Ausdrücke Funktionen (Perl-kompatibel)
Die Syntax für Suchmuster, die in diesen Funktionen verwendet werden, ist
Perl sehr ähnlich. Der Ausdruck muss von Begrenzungszeichen, z.B. von
Schrägstrichen (/), umgeben sein. Jedes Zeichen kann als
Begrenzungszeichen verwendet werden, solange es kein alphanumerisches
Zeichen oder der Backslash (\) ist. Falls das Begrenzungszeichen im
Ausdruck selbst verwendet wird, muss es mit dem Backslash als
Escape-Zeichen maskiert werden. Seit PHP 4.0.4 können Sie auch dem
Perl-Stil entsprechend (), {}, [] und <> als Begrenzung für
Suchmuster verwenden. Für eine ausführliche Erklärung siehe Suchmuster-Syntax.
An die Schlussbegrenzung können verschiedene Modifikatoren angehängt
werden, die das Suchergebnis beeinflussen. Siehe Modifikatoren für
Suchmuster.
Bei Verwendung der POSIX-erweiterten Reguläre
Ausdrücke Funktionen unterstützt PHP auch reguläre Ausdrücke mit
POSIX-erweiterter Syntax.
Anmerkung:
Diese Erweiterung unterhält pro Thread einen globalen Cache mit
compilierten regulären Ausdrücken (bis zu 4096).
| Warnung |
Sie sollten sich über ein paar Einschränkungen von PCRE bewusst sein.
Lesen Sie bitte http://www.pcre.org/pcre.txt für
weitere Informationen.
|
Diese Erweiterung benötigt keine externen Bibliotheken.
Ab PHP 4.2.0 sind diese Funktionen standardmäßig aktiviert. Sie können die
pcre-Funktionen mit --without-pcre-regex
deaktivieren. Falls Sie nicht die mitgelieferte Bibliothek benutzen, geben
Sie mit --with-pcre-regex=VERZEICHNIS an,
in welchem Verzeichnis die Include- und Bibliotheks-Dateien von PCRE liegen.
Bei älteren PHP-Versionen müssen Sie diese mit --with-pcre-regex[=VERZEICHNIS] konfigurieren und
übersetzen, um diese Funktionen benutzen zu können.
Die Windowsversion von PHP enthält diese
Erweiterung. Um diese Funktionen zu verwenden, müssen Sie keine zusätzlichen
Erweiterungen aktivieren. Das Verhalten dieser Funktionen wird
durch Einstellungen in der php.ini beeinflusst.
Tabelle 1. PCRE Configuration Options | Name | Default | Changeable | Changelog |
|---|
| pcre.backtrack_limit | 100000 | PHP_INI_ALL | Available since PHP 5.2.0. | | pcre.recursion_limit | 100000 | PHP_INI_ALL | Available since PHP 5.2.0. |
For further details and definitions of the
PHP_INI_* constants, see the Anhang G.
Hier eine kurze Erklärung der
Konfigurationsoptionen:
- pcre.backtrack_limit
integer
PCRE's backtracking limit.
- pcre.recursion_limit
integer
PCRE's recursion limit. Please note that if you set this value to a high
number you may consume all the available process stack and eventually
crash PHP (due to reaching the stack size limit imposed by the Operating
System).
Diese Erweiterung definiert keine Resource-Typen. 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.
Tabelle 2. PREG-Konstanten | 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 Teil-Suchmuster
ü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 seit 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 seit 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 seit 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 seit 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 seit 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
seit 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 seit 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 UTF8-Daten verursacht wurde
(nur bei RegEx, die im UTF-8-Modus laufen).
Es steht seit PHP 5.2.0 zur Verfügung.
|
Beispiel 1. Beispiele gültiger Suchmuster /<\/\w+>/ |(\d{3})-\d+|Sm /^(?i)php[34]/ {^\s+(\s+)?$}
|
Beispiel 2. Beispiele ungültiger Suchmuster
/href='(.*)' - fehlender Begrenzer am Ende
/\w+\s*\w+/J - ungültiger Modifikator 'J'
1-\d3-\d3-\d4| - fehlender Begrenzer am Anfang
|
- Inhaltsverzeichnis
- Suchmuster-Modifikatoren --
Beschreibt mögliche Modifikatoren in Regex-Suchmustern
- Pattern Syntax -- Describes PCRE regex syntax
- preg_grep --
Liefert die mit einem Suchmuster übereinstimmenden Array-Elemente
- preg_last_error --
Liefert den Fehlercode der letzten PCRE RegEx-Auswertung
- preg_match_all --
Führt eine umfassende Suche nach Übereinstimmungen mit regulärem
Ausdruck durch
- preg_match --
Führt eine Suche mit einem regulären Ausdruck durch
- preg_quote -- Maskiert Zeichen regulärer Ausdrücke
- preg_replace_callback --
Sucht und ersetzt einen regulären Ausdruck unter Verwendung eines Callbacks
- preg_replace -- Sucht und ersetzt einen regulären Ausdruck
- preg_split --
Zerlegt eine Zeichenkette anhand eines regulären Ausdrucks
|