1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /*
// petit code de test pour la fonction suivante
var_dump(convertDateFromEurToSQL('1/1/76', NULL));
var_dump(convertDateFromEurToSQL('1/1/1976', NULL));
var_dump(convertDateFromEurToSQL('28/2/01', NULL));
var_dump(convertDateFromEurToSQL('28/2', NULL));
var_dump(convertDateFromEurToSQL('29/2/01', NULL));
var_dump(convertDateFromEurToSQL('', NULL));
*/
function convertDateFromEurToSQL($eur, $emptyValue) {
if (empty($eur)) return $emptyValue; // Si la chaîne est vide, je retourne la chaîne par défaut
$pattern = '#[^\d]#u';
if (count(preg_split($pattern, $eur)) !== 3) return false; // Si la chaîne est incomplète, je signale une erreur
list($d, $m, $y) = preg_split($pattern, $eur);
if (!isset($d, $m, $y)) return false;
return (checkdate($m, $d, $y)) ?
(new DateTime("{$y}-{$m}-{$d}"))->format('Y-m-d'):
false; // Si la date n'existe pas, je signale une erreur
} |