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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top