preg_quote

(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)

preg_quote(input [, begrenzer ])

Parameter

input

Ein String, der in einem Pattern-Argument als literaler String behandelt werden soll (siehe Der »Pattern«-Parameter).

begrenzer

Ein optionaler, exakt ein Zeichen langer String, der im Pattern-Argument als Begrenzungszeichen verwendet werden soll.

Rückgabewert

preg_quote erzeugt eine Version von input, in der die Regex-Metazeichen maskiert sind. Wenn begrenzer angegeben wird, wird dieses Zeichen ebenfalls maskiert.

Erläuterungen

Wenn ein String vorhanden ist, der als literaler Text in einer Regex verwendet werden soll, sollte man diesen mit preg_quote behandeln, damit die Zeichen darin nicht als Regex-Metazeichen interpretiert werden. Man kann auch das Begrenzungszeichen angeben, das man verwenden wird, auch dieses wird dann maskiert.

Die Funktion preg_quote ist schon sehr spezialisiert, und man wird sie nicht allzu häufig verwenden, dennoch ein Beispiel:

/* E-Mails mit $MailBetreff in der Subject:-Zeile herausfiltern */
$pattern = '/^Subject:\s+(Re:\s*)*' . preg_quote($MailBetreff, '/') . '/mi';

Wenn $MailBetreff einen Text wie

**Sonderangebot** (Jetzt zugreifen!)

enthält, bekommt $pattern den Wert

/^Subject:\s+(Re:\s*)*\*\*Sonderangebot\*\* \(Jetzt zugreifen\!\)/mi

der gefahrlos in einem Pattern-Argument einer preg-Funktion verwendet werden kann.

Wenn für begrenzer das Zeichen ›{‹ oder irgendein anderes klammerartiges Zeichen verwendet wird, dann wird nur dieses maskiert, nicht aber das Gegenstück (›}‹). Verwenden Sie für diesen Zweck also nur ungepaarte Begrenzungszeichen.

Außerdem wird weder Whitespace noch ›#‹ maskiert; das Resultat eignet sich also nicht für eine Mustersuche mit dem x-Modifikator.

Alles in allem ist preg_quote nur eine halbherzige Lösung zur Behandlung von beliebigen literalen Texten in einer PHP-Regex. Nur das Problem »Text-zu-Regex« wird gelöst, nicht aber der Teilschritt »Regex-zu-Pattern-Argument«, der für einen allgemeinen Einsatz mit den preg-Funktionen notwendig wäre. Eine Lösung zu diesem Problem wird unter »Fehlende« preg-Funktionen entwickelt.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:
   

Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln