@@suit:
nuqneH
Nunja, man kann ja einen Regulären Ausdruck für die Findung der Bestandteile verwenden und diese dann mit checkdate() prüfen.
Ein einfacher \d{4}-\d{1,2}-\d{1,2} scheitert bereits, weil es ein Datum wie z.B. 2011-13-13 nicht gibt.
„[…] und diese [Bestandteile] dann mit checkdate() prüfen.“
Ja, aber damit kommt eben Mist zustande wenn dann ein 2001-0101 daherkommt - was bei der dafür gedachten Funktion schon abgefangen wird und einwandfrei hinhaut:
<?php
$foo = array(
'2011-01-02',
'2011-1-2',
'2011c1-2'
);
function bar($str) {
if(!$out = strptime ($str , '%Y-%m-%d')) {
echo "$str: fail\n";
} else {
echo "$str: \n";
print_r($out);
}
}
echo '<pre>';
bar($foo[0]);
bar($foo[1]);
bar($foo[2]);
?>