PHP
Referenzliste
preg_match
PCRE-Funktionen
Befehl:
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
Parameter-Liste:
Beschreibung | |
---|---|
Der Ausdruck, nach dem gesucht werden soll, als Zeichenkette. | |
Die zu durchsuchende Zeichenkette. | |
Falls der Parameter matches angegeben wurde, wird er mit den Suchergebnissen gefüllt. $matches[0] enthält dann den Text, der auf das komplette Suchmuster passt, $matches[1] den Text, der auf das erste eingeklammerte Teilsuchmuster passt 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 den Wert von matches in ein Array ändert, in dem jedes Element ein Array ist, das aus der übereinstimmenden Zeichenkette als Element 0 und deren Stelle in subject als Element 1 besteht. | |
Normalerweise beginnt die Suche am Anfang der Zeichenkette. Der optionale Parameter offset kann verwendet werden, um eine andere Stelle in Bytes anzugeben, ab der gesucht werden soll.Hinweis: Die Verwendung von offset entspricht nicht der Übergabe von substr($subject, $offset) an Stelle der zu Zeichenkette an preg_match(), weil pattern Angaben wie zum Beispiel ^, $ oder (?<=x) enthalten kann. Vergleiche:<?php Das oben gezeigte Beispiel erzeugt folgende Ausgabe: Array während dieses Beispiel <?php folgende Ausgabe erzeugt Array ( [0] => Array ( [0] => def [1] => 0 ) ) |
Rückgabewerte:
preg_match() gibt 1 zurück, falls eine Übereinstimmung zwischen
pattern
und subject
gefunden wurde, 0, falls nicht oder FALSE
, falls ein Fehler auftrat.Warnung:
Diese Funktion kann sowohl das boolsche FALSE zurückliefern, als auch einen nicht-boolschen Wert, welcher zu FALSE ausgewertet wird. Weitere Informationen entnehmen Sie bitte dem Abschnitt über die boolschen Typen. Benutzen Sie deshalb den === Operator, um den Rückgabewert dieser Funktion zu überprüfen.
Diese Funktion kann sowohl das boolsche FALSE zurückliefern, als auch einen nicht-boolschen Wert, welcher zu FALSE ausgewertet wird. Weitere Informationen entnehmen Sie bitte dem Abschnitt über die boolschen Typen. Benutzen Sie deshalb den === Operator, um den Rückgabewert dieser Funktion zu überprüfen.
Beschreibung:
Durchsucht
subject
nach Übereinstimmungen mit dem in pattern
angegebenen regulären Ausdruck. Aktiv in Version:
(PHP 4, PHP 5, PHP 7)
Tips:
Siehe auch:
Führt eine umfassende Suche nach Übereinstimmungen mit regulärem Ausdruck durch
Sucht und ersetzt mit regulären Ausdrücken
Zerlegt eine Zeichenkette anhand eines regulären Ausdrucks
Liefert den Fehlercode der letzten PCRE RegEx-Auswertung
preg_match() - Beispiel: Die Zeichenkette "php" finden
Eingabe:
<?PHP // Das "i" nach der Suchmuster-Begrenzung kennzeichnet eine Suche ohne // Berücksichtigung von Gross- 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."; } ?>
Beschreibung:
Beschreibung | |
---|---|
5.3.6 | Gibt FALSE zurück, wenn offset grösser als die Länge von subject ist. |
5.2.2 | Benannte Teilsuchmuster akzeptieren nun sowohl die Syntaxen (?<name>) und (?'name') als auch (?P<name>). Vorherige Versionen akzeptierten nur (?P<name>). |
4.3.3 | Den Parameter offset hinzugefügt |
4.3.0 | Das Flag PREG_OFFSET_CAPTURE hinzugefügt. |
4.3.0 | Den Parameter flags hinzugefügt |
preg_match() - Beispiel 2: Die Zeichenkette "web" finden
Eingabe:
<?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."; } ?>
Beschreibung:
Beschreibung | |
---|---|
5.3.6 | Gibt FALSE zurück, wenn offset grösser als die Länge von subject ist. |
5.2.2 | Benannte Teilsuchmuster akzeptieren nun sowohl die Syntaxen (?<name>) und (?'name') als auch (?P<name>). Vorherige Versionen akzeptierten nur (?P<name>). |
4.3.3 | Den Parameter offset hinzugefügt |
4.3.0 | Das Flag PREG_OFFSET_CAPTURE hinzugefügt. |
4.3.0 | Den Parameter flags hinzugefügt |
preg_match() - Beispiel 3: Den Domänen-Namen aus einer URL holen
Eingabe:
<?PHP // den Hostnamen aus URL holen preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $treffer); $host = $treffer[1]; // die letzten beiden Segmente aus Hostnamen holen preg_match('/[^.]+\.[^.]+$/', $host, $treffer); echo "Der Domänen-Name lautet: {$treffer[0]}\n"; ?>
Ausgabe:
Der Dom�nen-Name lautet: php.net
Beschreibung:
Beschreibung | |
---|---|
5.3.6 | Gibt FALSE zurück, wenn offset grösser als die Länge von subject ist. |
5.2.2 | Benannte Teilsuchmuster akzeptieren nun sowohl die Syntaxen (?<name>) und (?'name') als auch (?P<name>). Vorherige Versionen akzeptierten nur (?P<name>). |
4.3.3 | Den Parameter offset hinzugefügt |
4.3.0 | Das Flag PREG_OFFSET_CAPTURE hinzugefügt. |
4.3.0 | Den Parameter flags hinzugefügt |
preg_match() - Beispiel 4: Benannte Teilsuchmuster (named subpatterns)
Eingabe:
<?PHP $str = 'foobar: 2008'; preg_match('/(?P<name>\w+): (?P<zahl>\d+)/', $str, $treffer); /* Folgendes funktioniert ab PHP 5.2.2 (PCRE 7.0) ebenfalls, für die * Rückwärtskompatibilität wird aber die vorherige Form empfohlen. */ // preg_match('/(?<name>\w+): (?<zahl>\d+)/', $str, $treffer); print_r($treffer); ?>
Ausgabe:
Array
(
[0] => foobar: 2008
[name] => foobar
[1] => foobar
[zahl] => 2008
[2] => 2008
)
(
[0] => foobar: 2008
[name] => foobar
[1] => foobar
[zahl] => 2008
[2] => 2008
)
Beschreibung:
Beschreibung | |
---|---|
5.3.6 | Gibt FALSE zurück, wenn offset grösser als die Länge von subject ist. |
5.2.2 | Benannte Teilsuchmuster akzeptieren nun sowohl die Syntaxen (?<name>) und (?'name') als auch (?P<name>). Vorherige Versionen akzeptierten nur (?P<name>). |
4.3.3 | Den Parameter offset hinzugefügt |
4.3.0 | Das Flag PREG_OFFSET_CAPTURE hinzugefügt. |
4.3.0 | Den Parameter flags hinzugefügt |
PCRE-Funktionen