PHP Handbuch
Zurück |  | Nach vorne

# preg_match

(PHP 3>= 3.0.9, PHP 4 , PHP 5)

preg_match -- Führt eine Suche mit einem regulären Ausdruck durch

## Beschreibung

int preg_match ( string Suchmuster, string Zeichenkette [, array Treffer [, int Flags [, int Versatz]]])

Durchsucht `Zeichenkette` nach Übereinstimmungen mit dem in `Suchmuster` angegebenen regulären Ausdruck.

Falls der Parameter `Treffer` angegeben wurde, wird er mit den Suchergebnissen gefüllt. `$treffer[0]` enthält dann den Text, der mit dem kompletten Suchmuster übereinstimmt, `$treffer[1]` den Text, der mit dem ersten eingeklammerten Teil-Suchmuster übereinstimmt und so weiter.

`Flags` kann das folgende Flag sein:

PREG_OFFSET_CAPTURE

  Wenn dieses Flag gesetzt ist, wird mit jeder gefundenen Übereinstimmung der dazugehörige Versatz in der Zeichenkette zurückgegeben. Beachten Sie, dass dies die Rückgabewerte in einem Array dahingehend ändert, dass jedes Element ein Array ist, das aus der übereinstimmenden Zeichenkette als Element `0` und deren Stelle in der durchsuchten Zeichenkette als Element `1` besteht. Dieses Flag steht seit PHP 4.3.0 zur Verfügung.

Der Parameter `Flags` steht seit PHP 4.3.0. zur Verfügung.

Normalerweise beginnt die Suche am Anfang der Zeichenkette. Der optionale Parameter `Versatz` kann verwendet werden, um eine andere Stelle anzugeben, ab der gesucht werden soll. Es ist der Übergabe von substr()($zeichenkette, $versatz) an Stelle der Zeichenkette an preg_match() gleichwertig. Der Parameter `Versatz` steht seit PHP 4.3.3 zur Verfügung.

preg_match() gibt die Anzahl der Übereinstimmungen mit `Suchmuster` zurück. Das ist entweder 0 (keine Übereinstimmung) oder 1, weil preg_match() die Suche nach der ersten Übereinstimmung beendet. Im Gegensatz dazu setzt preg_match_all() die Suche bis zum Ende von `Zeichenkette` fort. preg_match() gibt `FALSE` zurück, falls ein Fehler auftrat.

> Tipp: Verwenden Sie nicht preg_match(), wenn Sie nur überprüfen wollen, ob eine Zeichenkette in einer anderen Zeichenkette enthalten ist. Verwenden Sie dafür stattdessen die Funktionen strpos() oder strstr(), die das schneller erledigen.

Beispiel 1. Die Zeichenkette "php" finden
`<?php // Das "i" nach der Suchmuster-Begrenzung kennzeichnet eine Suche ohne // Berücksichtigung von Groß- und Kleinschreibung if (preg_match("/php/i", "PHP ist die Web-Scripting-Sprache der Wahl.")) { echo "Es wurde eine Übereinstimmung gefunden."; } else { echo "Es wurde keine Übereinstimmung gefunden."; } ?>`

Beispiel 2. Die Zeichenkette "web" finden
`<?php // Das \b im Suchmuster kennzeichnet eine Wortgrenze, weshalb nur // eine Übereinstimmung mit der einzelnen Zeichenkette "web" gefunden wird und // nicht ein Teilwort in "webbing" oder "cobweb" if (preg_match("/\bweb\b/i", "Für das Web ist PHP die Scripting-Sprache der Wahl.")) { echo "Es wurde eine Übereinstimmung gefunden."; } else { echo "Es wurde keine Übereinstimmung gefunden."; } if (preg_match("/\bweb\b/i", "PHP ist die Web-Scripting-Sprache der Wahl.")) { echo "Es wurde eine Übereinstimmung gefunden."; } else { echo "Es wurde keine Übereinstimmung gefunden."; } ?>`

Beispiel 3. Den Domänen-Namen aus einer URL holen
`<?php // den Hostnamen aus URL holen preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $treffer); $host = $treffer[2]; // die letzten beiden Segmente aus Hostnamen holen preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $treffer); echo "Der Domänen-Name lautet: {$treffer[0]}\n"; ?>`
Dieses Beispiel erzeugt:
    Der Domänen-Name lautet: php.net

Siehe auch preg_match_all(), preg_replace() und preg_split().

Zurück | Zum Anfang | Nach vorne
preg_match_all | Nach oben | preg_quote