Es gibt wirklich keine geeignete Möglichkeit, ein Datumsfeld zu validieren. Sie können es nur aufteilen und in Teilen überprüfen.
Es gibt checkdate()
, aber wie in den Kommentaren auf der Dokumentenseite erwähnt, kann es nicht als wirksames Mittel zur Bereinigung der Datumseingabe verwendet werden.
Das erste, was ich normalerweise überprüfe, ist der Datentyp. Wenn ich einen String erwarte, dann in einen String umwandeln und ebenfalls für Integer- und Array-Werte.
// Casting example
$string = (string) $string;
$num = (int) $num;
$array = (array) $array;
Für Datumsfelder haben Sie normalerweise einen Trenner zwischen jedem Teil des Datums, der darauf basierend aufgeteilt wird und die Teile (wie viele Sie auch erwarten) als Ganzzahlen umwandelt.
$date = explode( '/', (string) $string );
$date = array_map( 'intval', $date );
// Now count the parts and validate them further - eg. you don't want negative values
Dies hängt natürlich wirklich davon ab, wie Sie das Datum speichern und was Sie in diesem Feld erwarten. Sie müssen es nur entsprechend Ihren spezifischen Anforderungen entsprechend bereinigen.
Numerische Werte sind recht einfach, zuerst in int ..
$num = (int) $var_with_num;
// Or
$num = absint( $var_with_expected_non_negative_num ); // absint is a WordPress function
Überprüfen Sie dann, ob es innerhalb Ihres vorgegebenen Bereichs liegt (gemäß Ihrer Frage).
// If it's not in range
if( $num < 100 || $num > 500 ) {
// Number is not in range
}
oder..
// If it is in range - including 100 & 500 as possible values
if( $num >= 100 && $num <= 500 ) {
// Number is in range
}
Es ist einfach zu überprüfen, ob eine Zeichenfolge eine bestimmte Länge hat. Ich werde Sie also einfach mit der PHP-Dokumentation für strlen verknüpfen.
http://php.net/manual/en/function.strlen.php
Die Datumswerte sind meiner Meinung nach am schwierigsten, aber es geht wirklich darum, Ihren Code so zu schreiben, wie Sie es von diesem Feld erwarten. Wenn Sie beispielsweise ein Feld mit einem Datumsformat von haben D/M/Y
, wissen Sie, dass der /
(Schrägstrich) vorhanden sein wird (sollte) und dass die Aufteilung auf diesem Delimeter ein Array von 3 numerischen Werten ergeben sollte ... (wenn die Aufteilung dies nicht tut) Wenn Sie keine 3 Werte angeben oder keine gültigen numerischen Werte vorliegen, waren die Daten ungültig.
Hoffe das hilft .. (und ich bin offen für Kritik, wenn jemand eine bessere Methode für eines der oben genannten hat).