Die ›preg‹-Programmierschnittstelle

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

Die Schnittstelle zur Regex-Maschine in PHP ist rein prozedural aufgebaut (siehe Prozeduraler und objektorientierter Ansatz) und besteht aus den sieben Funktionen aus dem oberen Teil von folgender Tabelle. Im unteren Teil sind vier nützliche Funktionen aufgeführt, die im weiteren Verlauf dieses Kapitels erarbeitet werden.

Tabelle: preg-Funktionen in PHP, Übersicht.

Funktion Verwendung
preg_match Überprüft, ob die Regex auf den String passt; holt Trefferdaten ab
preg_match_all Holt Trefferdaten ab
preg_replace Ersetzt Treffer durch Ersatztext in einer Kopie des Suchstrings
preg_replace_callback Ruft bei jedem Treffer im String eine Callback-Funktion auf
preg_split Teilt den Suchstring in ein Array von Substrings auf
preg_grep Wählt Elemente aus einem Array aus, die auf die Regex passen (oder nicht passen)
preg_quote Maskiert Regex-Metazeichen in einem String

Die folgenden Funktionen sind nicht Teil von preg, sie werden in diesem Kapitel erarbeitet.
preg_match Version von preg_match mit Unterscheidung von Nicht-Treffer und leerem Treffer
preg_regex_to_pattern Erzeugt aus einem Regex-String einen preg-Musterstring
preg_pattern_error Überprüft einen preg-Musterstring auf Syntaxfehler
preg_regex_error Überprüft einen Regex-String auf Syntaxfehler

Was diese Funktionen genau tun, hängt wesentlich von Typ und Anzahl der angegebenen Argumente ab, sowie von den gewählten Optionen und von den Modus-Modifikatoren in der Regex. Bevor wir uns mit den Details befassen, betrachten wir ein paar Programmbeispiele, um ein Gefühl dafür zu bekommen, wie reguläre Ausdrücke in PHP verwendet werden:

/* Überprüfen, ob das HTML-Tag ein <table>-Tag ist */
if (preg_match('/^<table\b/i', $tag))
  print "Tag $tag ist ein <table>-Tag\n";

/* Eingabe auf ganze Zahl testen */
if (preg_match('/^-?\d+$/', $eingabe))
  print "Eingabe ist eine ganze Zahl\n";

/* Titel aus dem <title>-Tag eines HTML-Strings extrahieren */
if (preg_match('{<title>(.*?)</title>}si', $html, $treffer))
  print "Seitentitel: $treffer[1]\n";

/* Zahlen in einem String von Fahrenheit in Celsius umrechnen */
$metrisch = preg_replace('/(-?\d+(?:\.\d+)?)/e',     /* Muster */
                         'floor(($1-32)*5/9 + 0.5)', /* Ersatztext */
                         $string);

/* Aus einem String mit einfachen CSV-Daten Array-Elemente erzeugen */
$werte_array = preg_split('!\s*,\s*!', $csv_string);

Im letzten Beispiel würde ein String wie ›Eene,meene,muh‹ ein Array mit den drei Elementen ›Eene‹, ›meene‹ und ›muh‹ ergeben.

  

  

<< 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