Auf Unterausdrücke zurückgreifen - Backreferences

Mittels Backreferences kann man auf durch Unterausdrücke definierte Teile des Suchmusters zugreifen, um sie entweder in der PHP-Funktion preg_replace als Ersatz weiter zu verwenden oder sie ins Suchmuster einzubauen.

Außerdem besteht bei den PHP-Funktionen preg_match bzw. preg_match_all die Möglichkeit, sich die gefundenen Unterausdrücke als Array-Elemente zurückgeben zu lassen. So lassen sich sehr schnell große Mengen an Informationen aus einem Text extrahieren.

Einmal definert, kann der gewünschte Unterausdruck referenziert werden, indem er mittels einem - bei Kapselung des Strings in einfache Anführungszeichen ' - oder zwei - bei Kapselung des Strings in doppelt Anführungszeichen " - Backslash, gefolgt von seiner Nummer, eingebunden wird. Man kann auch der jeweiligen Nummer ein Dollarzeichen $ voranstellen, um das selbe zu erreichen.

Die Nummerierung ergibt sich aus der Position des zugehörigen Unterausdrucks im Suchmuster. Die Unterausdrücke werden von links nach rechts, bei 1 beginnend, durchnummeriert, wobei jeweils bei der öffnende Klammer gezählt wird.

Die vier in diesem Beispiel #(.*)-(.*)-(.*)-(.*)# erzeugten Unterausdrücke lassen sich per \1, \2, \3 und \4 ansprechen.

Im folgenden Beispiel wird der Name eines HTML-Tags ausgelesen, in diesem Falle <span> oder <div>, und im schließenden Tag als Backreference wiederverwendet, um so die korrekte Verschachtelung der HTML-Elemente zu überprüfen. #<(span|div)>.*</\1># Der Reguläre Ausdruck trifft somit auf <div>Inhalt</div> bzw. <span>Inhalt</span> zu, aber nicht auf <div>Inhalt</span> oder <span>Inhalt</div>.

Verwandte Themen
Kapitelnavigation