English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die preg_match-Funktion wird verwendet, um eine reguläre Ausdrucksübereinstimmung auszuführen.
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
Sucht eine Übereinstimmung zwischen subject und dem regulären Ausdruck, der durch pattern gegeben ist.
Parameterbeschreibung:
$pattern: Zu suchendes Muster, in Form einer Zeichenkette.
$subject: Eingabestring.
$matches: Wenn der Parameter matches bereitgestellt wird, wird dieser mit den Suchergebnissen gefüllt. $matches[0] enthält den gesamten von der vollständigen Musterübereinstimmung erfassten Text, $matches[1enthalten wird. Der erste erfasste Untergruppenübereinstimmungstext, usw.
$flags: Die flags können auf die folgenden Markierungswerte gesetzt werden:
PREG_OFFSET_CAPTURE: Wenn dieser Markierungszeichenkette übergeben wird, wird bei der Rückgabe jeder Übereinstimmung der String-Offset (relativ zum Zielstring) hinzugefügt. Beachten Sie: Dies ändert den in den matches-Parameter gefüllten Array, so dass jeder Element ein Array ist, bei dem der 0. Element der geprüfte String ist, der1Ein Element ist der Offset der Übereinstimmungszeichenkette im Zielstring subject.
offset: Normalerweise beginnt die Suche am Anfang des Zielstrings. Der optionale Parameter offset wird verwendet, um die Suche von einer bestimmten unbekannten Position im Zielstring zu starten (in Bytes).
Gibt die Anzahl der Übereinstimmungen des Musters zurück. Sein Wert wird 0 Mal (keine Übereinstimmung) oder 1 Wiederholung, weil preg_match() nach der ersten Übereinstimmung den Suchvorgang stoppt. preg_match_all() ist anders, es sucht immer weiter im subject, bis zum Ende. Im Falle eines Fehlers gibt preg_match() FALSE zurück.
<?php
//Der nach dem Modus-Trennzeichen stehende "i"-Markierungszeichen zeigt an, dass dies eine Groß-/Kleinschreibungsunabhängige Suche ist
if (preg_match("/php/i", "PHP ist die Web-Skriptsprache der Wahl.")) {
echo "Eine übereinstimmende Zeichenkette php gefunden.";
} else {
echo "Keine übereinstimmende Zeichenkette php gefunden.";
}
?>
执行结果如下所示:
Eine übereinstimmende Zeichenkette php gefunden.
<?php
/* Das \b-Zeichen im Muster markiert einen Wortgrenzbereich, daher wird nur der独立的 Wort "web" gematcht und nicht
* Teilinhalt eines Wortes wie "webbing" oder "cobweb" */
if (preg_match("/\bweb\b/i", "PHP ist die Web-Skriptsprache der Wahl.")) {
echo "Übereinstimmende Zeichenkette gefunden.\n";
} else {
echo "Keine übereinstimmende Zeichenkette gefunden.\n";
}
if (preg_match("/\bweb\b/i", "PHP ist die bevorzugte Skriptsprache für Websites.")) {
echo "Übereinstimmende Zeichenkette gefunden.\n";
} else {
echo "Keine übereinstimmende Zeichenkette gefunden.\n";
}
?>
执行结果如下所示:
Übereinstimmende Zeichenkette gefunden. Keine übereinstimmende Zeichenkette gefunden.
<?php
// Erhalten Sie den Hostnamen aus der URL
preg_match('@^(?:http://)?([^/]+)@i',
"http://de.oldtoolbag.com/index.html", $matches);
$host = $matches[1;
// Erhalten Sie die letzten beiden Teile des Hostnamens
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "Domainname ist: {$matches[0]}\n";
?>
执行结果如下所示:
Domainname ist: oldtoolbag.com
<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
/* Nachfolgender Beispiel in php 5.2.2(pcre 7.0) oder in einer aktualisierten Version funktioniert, jedoch wird die obige Schreibweise empfohlen, um Abwärtskompatibilität zu gewährleisten. */
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>
执行结果如下所示:
Array ( [0] => foobar: 2008 [name] => foobar [1] => foobar [digit] => 2008 [2] => 2008 )