<?php
/**
* @param string $date format rrrr-mm-dd
* @return mixed - false or date format d.m.rrrr which really exists
*/
function typicalFormat($date){
$date = explode('-', $date);
if(count($date) == 3){
$year = $date[0];
$date[1] = preg_replace('~^0~', '', $date[1]);
$date[0] = preg_replace('~^0~', '', $date[2]);
$date[2] = $year;
$date = implode('.', $date);
if(existsDate($date, true) == 1){
return $date;
}
return false;
}
return false;
}
/**
* @param string $date format d.m.rrrr
* @return bool
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
function existsDate($date, $millenium = true){
$millenium = ($millenium) ? '4' : '1,';
return preg_match('~^([1-9]|19|[12][0-8]|29(?=\\.([^2]|2\\.(([02468][048]|[13579][26])00|[0-9]{2}(0[48]|[2468][048]|[13579][26]))))|30(?=\\.[^2])|31(?=\\.([13578][02]?\\.)))\\.([1-9]|1[012])\\.[0-9]{'.$millenium.'}$~D', $date);
}
var_dump(typicalFormat('999-02-05')); die();
- Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.7 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- bool(false)
preferences:
235.52 ms | 405 KiB | 328 Q