Simplifier un code avec filter_var_array
Bonjour,
Je voudrais simplifier le code suivant en utilisant filter_var_array. D'une part je ne m'en sors pas, d'autre part, je me demande si le nouveau code sera réellement plus simple. Ce que j'ai essayé d'après l'exemple de la doc ne m'encourage pas, au contraire. De plus je ne comprends pas bien cet exemple.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| function setDefaultValue($item=NULL, $defValue=NULL) {
return empty($item) ? $defValue: $item;
}
function convertDateFromEurToSQL($eur, $emptyValue) {
if (empty($eur))
return $emptyValue; // Si la chaîne est vide, je retourne la chaîne par défaut
$parts = preg_split('#[^\d]#u', $eur);
if (count($parts) !== 3)
return false; // Si la chaîne ne comprend pas le bon nombre d'éléments, je signale une erreur
list($d, $m, $y) = $parts;
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
}
$toSave['gender'] = setDefaultValue($toSave['gender'], '');
$toSave['last_name'] = setDefaultValue($toSave['last_name'], '');
$toSave['first_name'] = setDefaultValue($toSave['first_name'], '');
$toSave['middle_name'] = setDefaultValue($toSave['middle_name'], NULL);
$toSave['birth_date'] = convertDateFromEurToSQL($toSave['birth_date'], NULL);
$toSave['birth_place'] = setDefaultValue($toSave['birth_place'], NULL);
$toSave['christening_date'] = convertDateFromEurToSQL($toSave['christening_date'], NULL);
$toSave['death_date'] = convertDateFromEurToSQL($toSave['death_date'], NULL);
$toSave['death_place'] = setDefaultValue($toSave['death_place'], NULL);
$toSave['profession'] = setDefaultValue($toSave['profession'], NULL);
$toSave['comment'] = setDefaultValue($toSave['comment'], NULL);
$toSave['father_id'] = setDefaultValue($toSave['father_id'], NULL);
$toSave['mother_id'] = setDefaultValue($toSave['mother_id'], NULL);
$toSave['birth_order'] = setDefaultValue($toSave['birth_order'], NULL); |