确实没有合适的方法来验证日期字段,您所能做的就是将其拆分并进行部分检查。。
有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
}
检查字符串是否为特定长度很容易,事实上很容易,我只想将您链接到strlen的PHP文档。
http://php.net/manual/en/function.strlen.php
在我看来,日期值是最棘手的,但实际上,编写代码是为了满足您对该字段的期望。如果您有一个日期格式为的字段
D/M/Y
例如,您知道
/
(正斜杠)将(应该)出现,并且在该delimeter上的拆分应该给您一个由3个数值组成的数组。。。(如果拆分没有给您3个值,或者任何值都不是有效的数值,则数据无效)。。
希望这有帮助。。(如果有人有更好的方法来解决上述问题,我愿意接受批评)。