Reguläre PHP -Ausdrücke
Was ist ein regulärer Ausdruck?
Ein regulärer Ausdruck ist eine Zeichenfolge, die ein Suchmuster bildet. Wenn Sie in einem Text nach Daten suchen, können Sie dieses Suchmuster verwenden, um zu beschreiben, wonach Sie suchen.
Ein regulärer Ausdruck kann ein einzelnes Zeichen oder ein komplizierteres Muster sein.
Reguläre Ausdrücke können verwendet werden, um alle Arten von Textsuch- und Textersetzungsoperationen durchzuführen.
Syntax
In PHP sind reguläre Ausdrücke Zeichenfolgen, die aus Trennzeichen, einem Muster und optionalen Modifikatoren bestehen.
$exp = "/w3schools/i";
Im obigen Beispiel /
ist das Trennzeichen , w3schools das Muster , nach dem gesucht wird, und i
ein Modifikator , der die Suche unabhängig von Groß- und Kleinschreibung macht.
Das Trennzeichen kann ein beliebiges Zeichen sein, das kein Buchstabe, keine Zahl, kein umgekehrter Schrägstrich oder kein Leerzeichen ist. Das gebräuchlichste Trennzeichen ist der Schrägstrich (/), aber wenn Ihr Muster Schrägstriche enthält, ist es praktisch, andere Trennzeichen wie # oder ~ zu wählen.
Reguläre Ausdrucksfunktionen
PHP bietet eine Vielzahl von Funktionen, mit denen Sie reguläre Ausdrücke verwenden können. Die
Funktionen preg_match()
, preg_match_all()
und preg_replace()
gehören zu den am häufigsten verwendeten:
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
Verwendung von preg_match()
Die preg_match()
Funktion teilt Ihnen mit, ob eine Zeichenfolge Übereinstimmungen mit einem Muster enthält.
Beispiel
Verwenden Sie einen regulären Ausdruck, um eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung nach „w3schools“ in einer Zeichenfolge durchzuführen:
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Verwendung von preg_match_all()
Die preg_match_all()
Funktion teilt Ihnen mit, wie viele Übereinstimmungen für ein Muster in einer Zeichenfolge gefunden wurden.
Beispiel
Verwenden Sie einen regulären Ausdruck, um die Anzahl der Vorkommen von "ain" in einer Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung zu zählen:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
Verwendung von preg_replace()
Die preg_replace()
Funktion ersetzt alle Übereinstimmungen des Musters in einer Zeichenfolge durch eine andere Zeichenfolge.
Beispiel
Verwenden Sie einen regulären Ausdruck ohne Berücksichtigung der Groß-/Kleinschreibung, um Microsoft durch W3Schools in einer Zeichenfolge zu ersetzen:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo
preg_replace($pattern, "W3Schools", $str); // Outputs "Visit
W3Schools!"
?>
Modifikatoren für reguläre Ausdrücke
Modifikatoren können ändern, wie eine Suche durchgeführt wird.
Modifier | Description |
---|---|
i | Performs a case-insensitive search |
m | Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line) |
u | Enables correct matching of UTF-8 encoded patterns |
Reguläre Ausdrucksmuster
Klammern werden verwendet, um eine Reihe von Zeichen zu finden:
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find any character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
Metazeichen
Metazeichen sind Zeichen mit besonderer Bedeutung:
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
Quantifizierer
Quantifizierer definieren Mengen:
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
Hinweis: Wenn Ihr Ausdruck nach einem der Sonderzeichen suchen muss, können Sie einen umgekehrten Schrägstrich ( \ ) verwenden, um sie zu maskieren. Um beispielsweise nach einem oder mehreren Fragezeichen zu suchen, können Sie den folgenden Ausdruck verwenden: $pattern = '/\?+/';
Gruppierung
Sie können Klammern verwenden ( )
, um Quantifizierer auf ganze Muster anzuwenden. Sie können auch verwendet werden, um Teile des Musters auszuwählen, die als Übereinstimmung verwendet werden sollen.
Beispiel
Verwenden Sie die Gruppierung, um nach dem Wort "Banane" zu suchen, indem Sie nach ba suchen, gefolgt von zwei Vorkommen von na :
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Vollständige RegExp-Referenz
Eine vollständige Referenz finden Sie in unserer Complete PHP Regular Expression Reference .
Die Referenz enthält Beschreibungen und Beispiele aller regulären Ausdrucksfunktionen.