Montag und Sonntag einer Kalenderwoche

Den Montag und den Sonntag einer gegebenen Kalenderwoche kann mit PHP (ab Version 5) einfach wie folgt ermittelt werden:

<?php
$tsMonday = strtotime(date('Y') . 'W' . date('W') . '1'));
$tsSunday = strtotime(date('Y') . 'W' . date('W') . '7'));
?>

Dabei wird ein Datumsstring in der Form ‚2008W411‘ an strtotime() übergeben, also Jahr 2008, KW 41, Tag 1 (Montag).

Andere Tage einer KW können durch anpassen des Tages (1-7) errechnet werden.

Gierigkeit bei Regular Expressions

Mit einem Reguläre Ausdruck (Regular Expression) wir ein Suchmuster für eine (oder mehrere) Teilzeichenketten innerhalb einer Zeichenmenge beschrieben. Reguläre ausdrücke können z. B. eingesetz werden um eine E-Mail-Adresse oder andere Formularfelder auf eine gültige Syntax (wurden nur erlaubte Zeichen eingegeben) zu prüfen.

Gierigkeit
Im Normalfall verhält sich ein Regulärer Ausdruck immer „gierig“, d. h. er umfasst die größtmögliche Anzahl von Zeichen, die dem Suchmuster entsprechen. Sofern dies nicht gewünscht ist, kann ein Suchmuster als „genügsam“ deklariert werden.

Beispiel: In einer Zeichenkette sind Platzhalter definiert, die über einen Regulären Ausdruck gefunden werden sollen, hier das Datumsformat ‚d.m.Y‘: Heute ist der {d:d.m.Y}, hallo {name}.

Der Reguläre Ausdruck ‚/{d:(.*)}/‘ würde nun im gierigen Verhalten die Teilzeichenkette ‚d.m.Y}, hallo {name‘ extrahieren. Um die für dieses Bespiel gewünschte Teilzeichenkette ‚d.m.Y‘ zu extrahieren muss der Ausdruck genügsam sein. Dies wird durch den „non-greedy“-Quantor „*?“ erreicht: ‚/{d:(.*?)}/‘.

Im PHP könnte der Aufruf dann wie folgt aussehen:
preg_match(‚/{d:(.*?)}/‘, ‚Heute ist der {d:d.m.Y}, hallo {name}‘, $matches);

Umfassende Informationen zu Regulären Ausdrücken: