Как проверить дату, приходящую во многих форматах - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу создать функцию для проверки даты, дата может быть во многих форматах, как указано ниже.

enter image description here

Здесь 02 = Месяц, 2020 и 20 = год и другие даты

function validateDate($date, $format = 'Y-m-d')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
} 


ob_end_clean();

header('Content-Type: text/csv; charset=utf-8');

header('Content-Disposition: attachment; 
filename=attendance_upload_csv'.time().'.csv');

header("Pragma: no-cache");

header("Expires: 0");
$file = fopen('php://output', 'w');
$fieldArr['field_name']['agent_user_name']          = 'Agent User Name';
$fieldArr['field_name']['date_of_violation']        = 'Date Of Violation';


fputcsv($file, $fieldArr['field_name']);

fclose($file);

проблема заключается в том, что не все даты проверяются, пожалуйста, сообщите.

Заранее спасибо

1 Ответ

1 голос
/ 08 апреля 2020

Если вы позволяете пользователю помещать все что угодно во входящий CSV-файл, это плохая идея. Поскольку процесс ввода данных находится вне вашего прямого контроля, вам нужно вместо этого установить некоторые правила и ожидания, которые затем применяются PHP при проверке загруженного файла.

Выпуск инструкций, которые говорят пользователю, что они должны ввести дату в одном единственном формате (по вашему выбору, предпочтительно однозначном, таком как Ymd, так что никто не может сомневаться, что означают данные при вводе Это). Если они этого не делают, вы отклоняете файл. Просто, проблема решена.

Ваш код не может угадать намерения пользователя или то, что они будут печатать. Поэтому решение состоит в том, чтобы сказать им, что именно требуется, а затем отклонить все, что не соответствует вашей спецификации.

...