Untitled
unknown
plain_text
3 years ago
1.7 kB
12
Indexable
function parseDate($date, $outputFormat = 'd/m/Y'){
$formats = array(
'd/m/y',
'd/m/Y'
);
foreach($formats as $format){
$dateObj = \DateTime::createFromFormat($format, $date);
if($dateObj !== false){
break;
}
}
if($dateObj === false){
throw new Exception('Invalid date:' . $date);
}
return $dateObj->format($outputFormat);
}
function findLatestDate($string) {
$regex = '/\b((0?[1-9]|[12]\d|3[01])[\.\/](0?[1-9]|1[0-2])[\.\/]\d{2}(\d{2})?)|((0?[1-9]|[12]\d|30)[\.\/](0?[469]|11)[\.\/]\d{2}(\d{2})?)|((0?[1-9]|1\d|2[0-8])[\.\/]0?2[\.\/]\d{2}(\d{2})?)|((0?[1-9]|1\d|2[0-9])[\.\/]0?2[\.\/]((19|[2-9]\d)\d{2}))|((0?[1-9]|[12]\d|3[01])[\.\/](0?[13578]|1[02])[\.\/]((1[6-9]|[2-9]\d)\d{2}))|((0?[1-9]|[12]\d|30)[\.\/]0?2[\.\/]((1[6-9]|[2-9]\d)\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\/]0?2[\.\/]((1[6-9]|[2-9]\d)\d{2}))\b/';
$todasAsDatas = [];
preg_match_all($regex, $string, $matches);
$dataMaisRecente = null;
foreach($matches[0] as $match) {
$match = $this->parseDate($match);
$dataAtual = \DateTime::createFromFormat('d/m/Y', $match, new \DateTimeZone('America/Sao_Paulo'));
if ($dataAtual > $dataMaisRecente || $dataMaisRecente === null) {
$dataMaisRecente = $dataAtual;
}
$todasAsDatas[] = $match;
}
if ($dataMaisRecente !== null) {
return $dataMaisRecente->format('Y-m-d');
} else {
return null;
}
}Editor is loading...