Ho un metodo php che controlla se un parametro passato è una data. Qui è tutto:is_date() non funziona correttamente
public function is_Date($str){
if (is_numeric($str) || preg_match('^[0-9]^', $str)){
$stamp = strtotime($str);
$month = date('m', $stamp);
$day = date('d', $stamp);
$year = date('Y', $stamp);
return checkdate($month, $day, $year);
}
return false;
}
allora, i test-guidato in questo modo:
$var = "100%";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/1970";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/2005";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/1985";
if(is_Date($var)){
echo $var.' '.'is a date';
}
Si noti che ciascuna delle IFS ha anche un else come in:
else{
echo $var.' '.'is not a date'
}
USCITA:
100% is a Date
31/03/1970 is a Date
31/03/2005 is a Date
31/03/1985 is a Date
Il mio problema è, perché è Visualizzazione al 100% come data e perché 31/03/1985
non viene letto come una data?
Qualsiasi indizio sul perché saranno molto apprezzati come io non sono troppo competenza Regex
Perché non semplicemente controllare: 'is_numeric (strtotime ($ str)) '? – hjpotter92
cosa intendi in '^ [0-9] ^'? –