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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top