Signatur
Beschreibung
preg_match() ist die Kern-Regex-Funktion in PHP. Sie prüft, ob das Pattern mindestens einmal im Subject vorkommt, und schreibt bei Bedarf den ersten Treffer inklusive aller Capture-Groups in $matches.
Delimiter üblich sind / oder #; alles, was nicht alphanumerisch ist, funktioniert. Modifier stehen nach dem End-Delimiter: i (case-insensitive), m (multi-line), s (dot matches newline), u (UTF-8), x (extended).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $pattern Pflicht | string | — | Regex mit Delimitern und optionalen Modifiern, z. B. /foo/i. |
| $subject Pflicht | string | — | Der zu durchsuchende String. |
| $matches | array& | null | Optionales Referenz-Array — wird mit dem Match und Capture-Groups befüllt. |
| $flags | int | 0 | Optionale Flags, z. B. PREG_OFFSET_CAPTURE. |
| $offset | int | 0 | Byte-Position, ab der gesucht wird. |
Rückgabewert
1 bei Treffer, 0 bei kein Treffer, false bei Fehler (ungültiges Pattern).Beispiele
E-Mail-Adresse extrahieren
<?php
if (preg_match('/[\w.+-]+\@[\w.-]+\.[a-z]{2,}/i', 'Mail: anna\@example.com', $m)) {
echo $m[0]; // anna\@example.com
}
Named Capture Groups
<?php
if (preg_match('#(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2})#', '2026-09-18', $m)) {
echo "{$m['tag']}.{$m['monat']}.{$m['jahr']}";
}
// Wichtig · Fallstricke
Nutze den u-Modifier bei UTF-8-Input, sonst matchen \\w und . nicht wie erwartet. Beispiel: /^\\w+$/u statt /^\\w+$/.