convalida campo data preg_match
-
19-09-2019 - |
Domanda
cerco di "validare" un campo data. Voglio solo consentire, caratteri numerici e -. Carattere
$born_date=$_POST['date'];
$goodchars = array("1","2","3","4","5","6","7","8","9","0","-");
$char_re_good = '/['.preg_quote(join('', $goodchars), '/').']/';
if (!(preg_match($char_re_good, $born_date))) {
echo "not ok, contain INVALID chars"
}else{
echo "ok, contain valid chars"
}
Se provo a cercare "1960", quindi OK. Se provo a cercare "asdfg" quindi NON OK. Ma se la ricerca di "1960 /", quindi l'uscita è OK. Non capisco perché.
Potresti aiutarmi a modificare per controllare se l'utente solo "0-9" e "-". Caratteri compilare il campo
Grazie
Soluzione
è necessario "ancorare" la vostra espressione, cioè inserire inizio di corda ^ e alla fine della stringa $ marcatori.
preg_match('/^[0-9-]+$/', $born_date);
Tuttavia, preg_match non è un modo per convalidare le date. Per esempio, quanto sopra accetterà "99999999", ecc
Altri suggerimenti
di user187291 regex corrisponderà personaggi data unica, che è ciò che si desidera. Un modo rapido per validare una data è quello di cercare di convertirlo in un timestamp tramite strtotime()
:
if (strtotime($date_str)!==false) {
// The date is valid.
}
$char_re_good = "/^[0-9-]+$/";
Dare che una prova