- i (
PCRE_CASELESS)
-
Wenn dieser Modifikator gesetzt ist, passen Buchstaben im Suchmuster
sowohl auf groß- als auch auf kleingeschriebene Buchstaben.
- m (
PCRE_MULTILINE)
-
Standardmäßig behandelt PCRE eine zu durchsuchende Zeichenkette wie
eine einzige Zeile von Zeichen (auch wenn sie tatsächlich mehrere
Zeilenumbrüche enthält). Das Metazeichen für einen Zeilenanfang (^)
passt nur auf den Anfang der Zeichenkette, das Metazeichen für ein
Zeilenende ($) nur auf das Ende der Zeichenkette (falls der Modifikator
D nicht gesetzt ist). Das ist genauso wie bei
Perl.
Wenn dieser Modifikator gesetzt ist, passen die Zeilenanfang- und
Zeilenende-Konstrukte in der Zeichenkette sowohl direkt nach, bzw. vor
einem Zeilenumbruch als auch auf deren Anfang und Ende. Das entspricht
dem Perl-Modifikator /m. Falls die Zeichenkette keine Sequenz "\n"
enthält, oder im Suchmuster kein ^ oder $ vorkommt, hat dieser
Modifikator keine Wirkung.
- s (
PCRE_DOTALL)
-
Wenn dieser Modifikator gesetzt ist, passt das Metazeichen Punkt im
Suchmuster auf alle Zeichen inklusive Zeilenumbrüche. Ohne diesen
Modifikator sind Zeilenumbrüche ausgeschlossen. Dieser Modifikator
entspricht dem Perl-Modifikator /s. Unabhängig davon, ob dieser
Modifikator gesetzt ist, passt eine verneinende Zeichenklasse, z. B.
[^a], immer auf einen Zeilenumbruch.
- x (
PCRE_EXTENDED)
-
Wenn dieser Modifikator gesetzt ist, werden Leerräume im Suchmuster
ignoriert, sofern sie nicht maskiert sind oder sich innerhalb einer
Zeichenklasse befinden. Außerdem werden Zeichen, die außerhalb einer
Zeichenklasse zwischen nicht maskierten # stehen, einschließlich dem
nächsten Zeilenumbruch ignoriert. Das entspricht dem Perl-Modifikator
/x und bietet die Möglichkeit, Kommentare in komplizierte Suchmuster
einzufügen. Beachten Sie aber, dass dies nur für Datenzeichen gilt.
Leerräume dürfen niemals innerhalb einer Folge spezieller Zeichen
auftreten, zum Beispiel in der Folge (?(, die einen
bedingten Teilausdruck einleitet.
- A (
PCRE_ANCHORED)
-
Wenn dieser Modifikator gesetzt ist, wird das Suchmuster "verankert",
das bedeutet, dass es gezwungen wird, nur auf den Anfang der
durchsuchten Zeichenkette zu passen. Diese Wirkung kann auch durch
geeignete Konstrukte im Suchmuster selbst erreicht werden, was in Perl
die einzige Möglichkeit ist, sie zu realisieren.
- D (
PCRE_DOLLAR_ENDONLY)
-
Wenn dieser Modifikator gesetzt ist, passt ein Dollar-Metazeichen im
Suchmuster nur auf das Ende der durchsuchten Zeichenkette. Ohne diesen
Modifikator passt ein Dollarzeichen auch direkt vor dem letzten
Zeichen, falls es ein Zeilenumbruch ist (aber nicht vor anderen
Zeilenumbrüchen). Wenn der Modifikator m gesetzt
ist, wird dieser Modifikator ignoriert. Für diesen Modifikator gibt es
in Perl keine Entsprechung.
- S
-
Wenn ein Suchmuster mehrmals verwendet werden soll, lohnt es sich, mehr
Zeit für dessen Analyse aufzubringen um die Suche zu optimieren. Wenn
dieser Modifikator gesetzt ist, wird diese zusätzliche Analyse
durchgeführt. Gegenwärtig ist die Untersuchung eines Suchmusters nur
für nicht verankerte Suchmuster brauchbar, die am Anfang kein einzelnes
fixiertes Zeichen haben.
Seit PHP 7.3.0 hat dieses Flag keine Wirkung mehr.
- U (
PCRE_UNGREEDY)
-
Dieser Modifikator kehrt die Gier von Quantifikatoren um, sodass sie
standardmäßig nicht gierig sind, aber gierig werden, wenn ihnen ein
? folgt. Das ist nicht mit Perl kompatibel. Es kann
auch innerhalb des
Suchmusters mit dem Modifikator (?U) oder
durch ein Fragezeichen hinter dem Quantifikator (z. B.
.*?) gesetzt werden.
Hinweis:
Im Ungreedy-Modus ist es nicht möglich, mehr als
pcre.backtrack_limit
Übereinstimmungen zu treffen.
- X (
PCRE_EXTRA)
-
Dieser Modifikator schaltet zusätzliche PCRE-Funktionalität ein, die
nicht mit Perl kompatibel ist. Ein Backslash vor einem Buchstaben, der
keine spezielle Bedeutung hat, verursacht eine Fehlermeldung und
reserviert diese Kombinationen somit für künftige Erweiterungen.
Standardmäßig wird ein Backslash vor einem Buchstaben, der keine
spezielle Bedeutung hat, wie in Perl als Buchstabensymbol behandelt.
Gegenwärtig werden von diesem Modifikator keine weiteren Eigenschaften
kontrolliert.
- J (
PCRE_INFO_JCHANGED)
-
Die interne Option (?J) ändert die lokale Option
PCRE_DUPNAMES. Erlaubt doppelte Namen für
Teilsuchmuster. Von PHP 7.2.0 an wird der
J-Modifikator ebenfalls unterstützt.
- u (
PCRE_UTF8)
-
Dieser Modifikator schaltet zusätzliche PCRE-Funktionalität ein, die
nicht mit Perl kompatibel ist. Suchmuster und durchsuchte Zeichenketten
werden als UTF-8 behandelt. Eine ungültige Zeichenkette bewirkt, dass
die preg_*-Funktionen keine Übereinstimmungen finden. Ein ungültiges
Suchmuster erzeugt einen Fehler der Stufe E_WARNING.
UTF-8-Zeichenfolgen mit fünf oder sechs Oktetten werden als ungültig
betrachtet.
- n (
PCRE_NO_AUTO_CAPTURE)
-
Dieser Modifikator bewirkt, dass einfache (xyz)-Gruppen
nicht erfassend sind. Nur benannte Gruppen wie
(?<name>xyz) sind erfassend. Dies wirkt sich nur
darauf aus, welche Gruppen erfassend sind. Es ist weiterhin möglich,
nummerierte Teilsuchmuster zu verwenden, und das Array matches enthält
weiterhin nummerierte Ergebnisse. Verfügbar seit PHP 8.2.0.
- r (
PCRE2_EXTRA_CASELESS_RESTRICT)
-
Wenn u (PCRE_UTF8) und
i (PCRE_CASELESS) verwendet
werden, verhindert dieser Modifikator, dass ASCII- und
Nicht-ASCII-Zeichen übereinstimmen.
Zum Beispiel passt preg_match('/\x{212A}/iu', "K") auf das
Kelvin-Zeichen K (U+212A).
Wenn r verwendet wird
(preg_match('/\x{212A}/iur', "K")), gibt es keine
Übereinstimmung.
Verfügbar seit PHP 8.4.0.