validación de campo de fecha preg_match
-
19-09-2019 - |
Pregunta
Trato de "validar" un campo de fecha. Sólo quiero permitir, caracteres numéricos y -. Carácter
$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"
}
Si trato de buscar "1960" y luego en Aceptar. Si trato de buscar "asdfg", entonces NO OK. Pero si busco "1960 /", entonces la salida es OK. No entiendo por qué.
¿Podría ayudarme a modificar para comprobar si el usuario solamente "0-9" y "-". Caracteres llenar el campo
Gracias
Solución
que necesita para "anclar" su expresión, es decir, insertar inicio de la cadena ^ $ y al final de los marcadores de cuerda.
preg_match('/^[0-9-]+$/', $born_date);
Sin embargo, preg_match no es una manera de validar fechas. Por ejemplo, el superior para aprobar "99999999", etc.
Otros consejos
de user187291 expresiones regulares coincidirá con la fecha sólo caracteres, que es lo que desea. Una forma rápida para validar una fecha es tratar de convertirla en una marca de tiempo a través de strtotime()
:
if (strtotime($date_str)!==false) {
// The date is valid.
}
$char_re_good = "/^[0-9-]+$/";
Inténtelo