Start · Sprachen · PHP · Referenz · preg_match

preg_match

Funktion

Prüft, ob ein regulärer Ausdruck (PCRE) auf einen String matcht — und liefert den ersten Treffer.

seit PHP 4.0.0 Kategorie: regex

Signatur

preg_match(string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0): int|false

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

Typ
int|false
Beschreibung
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
}
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']}";
}
18.09.2026

// Wichtig · Fallstricke

Nutze den u-Modifier bei UTF-8-Input, sonst matchen \\w und . nicht wie erwartet. Beispiel: /^\\w+$/u statt /^\\w+$/.