Die Syntax für Suchmuster, die in diesen Funktionen verwendet werden, ist Perl sehr ähnlich. Der Ausdruck muss zwischen Begrenzungszeichen, z.B. Schrägstrichen (/), stehen. Als Begrenzungszeichen darf jedes Zeichen verwendet werden, das nicht alphanumerisch ist und das, mit Ausnahme des Backslashs (\) und des Nullzeichens, kein ASCII-Leerzeichen ist. Falls das Begrenzungszeichen im Ausdruck selbst verwendet wird, muss es mit dem Backslash als Escape-Zeichen maskiert werden. Ab 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.
Hinweis:
Diese Erweiterung unterhält pro Thread einen globalen Cache mit compilierten regulären Ausdrücken (bis zu 4096).
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.
Die PCRE-Bibliothek ist ein Satz von Funktionen, der die Suche nach regulären Ausdrücken mit der, von wenigen Unterschieden (siehe unten) abgesehen, gleichen Syntax und Semantik wie Perl 5 realisiert. Die aktuelle Implementierung entspricht Perl 5.005.
Converting POSIX regex patters to PCRE is non-trivial. I had many (about 17.000) patterns stored in a DB, and found that surrounding one with delimiters (such as '/'), after quoting them, is not enough.
I've been biten by a \r that slipped into a pattern (that was supposed to be \.r and became .\r instead). Too bad in PCRE it stands for carriage-return.
AFAIK, there's no way to disable this behaviour and make PCRE more POSIX compatibile. You have to look for every single escape sequence that has no meaning in POSIX regex but has one in PCRE and remove the backslash.
Before POSIX regex are removed it would be really cool to have a function that converts a POSIX regex pattern into the equivalent PCRE one.