Preg Spieldatum Feldvalidierung
-
19-09-2019 - |
Frage
Ich versuche, „Validate“ ein Datumsfeld. Ich möchte nur erlauben, numerische Zeichen und -. Zeichen
$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"
}
Wenn ich versuche, für „1960“ suchen, dann auf OK. Wenn ich versuche, für „asdfg“ dann NICHT OK suchen. Aber wenn ich nach „1960 /“ dann ist der Ausgang OK. Ich verstehe nicht, warum.
Können Sie mir helfen, ändern zu überprüfen, ob Benutzer nur „0-9“ und „-“. Zeichen das Feld ausfüllen
Danke
Lösung
Sie müssen zu „Anker“ Ihr Ausdruck, das heißt Einsatz von String beginnen ^ und das Ende der Zeichenfolge $ Marker.
preg_match('/^[0-9-]+$/', $born_date);
ist jedoch preg_match keine Möglichkeit zur Validierung der Termine. Zum Beispiel wird die oben akzeptieren „99999999“ etc
Andere Tipps
user187291 regex werden nur Datum Zeichen übereinstimmen, das ist, was Sie wollen. Eine schnelle Möglichkeit, ein Datum zu validieren ist, zu versuchen und wandelt es zu einem Zeitstempel über strtotime()
:
if (strtotime($date_str)!==false) {
// The date is valid.
}
$char_re_good = "/^[0-9-]+$/";
geben, dass ein Versuch