Там действительно нет подходящего способа проверить поле даты, все, что вы можете сделать, это разделить его и проверить его по частям.
Это так checkdate()
, но, как уже упоминалось в комментариях на странице документов, его нельзя использовать в качестве эффективного средства для дезинфекции ввода даты.
Первое, что я обычно проверяю, это тип данных, если ожидается строка, затем приведение к строке, а также для целочисленных значений и значений массива.
// Casting example
$string = (string) $string;
$num = (int) $num;
$array = (array) $array;
Для полей даты у вас обычно есть разделитель между каждой частью даты, разделенный на основе этого и приведенный части (сколько вы ожидаете) как целые числа.
$date = explode( '/', (string) $string );
$date = array_map( 'intval', $date );
// Now count the parts and validate them further - eg. you don't want negative values
Конечно, это действительно зависит от того, как вы храните дату и что вы ожидаете в этой области, это то, что вам просто нужно соответствующим образом санировать в соответствии с вашими конкретными потребностями.
Числовые значения довольно просты, сначала приводятся к int ..
$num = (int) $var_with_num;
// Or
$num = absint( $var_with_expected_non_negative_num ); // absint is a WordPress function
Затем проверьте, находится ли он в заданном диапазоне (по вашему вопросу).
// If it's not in range
if( $num < 100 || $num > 500 ) {
// Number is not in range
}
или..
// If it is in range - including 100 & 500 as possible values
if( $num >= 100 && $num <= 500 ) {
// Number is in range
}
Проверить, является ли строка определенной длины, легко, так что на самом деле я просто собираюсь связать вас с документацией PHP для strlen.
http://php.net/manual/en/function.strlen.php
По моему мнению, значения даты являются самыми хитрыми, но на самом деле это тот случай, когда вы пишете свой код, соответствующий тому, что вы ожидаете от этого поля. Если у вас есть поле с форматом даты, D/M/Y
например, вы знаете, что /
(косая черта) будет (должна) присутствовать и что разделение на этом разделителе должно дать вам массив из 3 числовых значений ... (если расщепление не ' Если вы не дадите 3 значения, или любое из них не является допустимым числовым значением, то данные будут недействительными).
Надеюсь, это поможет .. (и я открыт для критики, если у кого-то есть лучший метод для любого из вышеперечисленных).