【发布时间】:2012-03-11 13:17:18
【问题描述】:
也许是一个非常简单的问题,但是我不知道我做错了什么,也许有人可以帮助我?
有一个包含年份的 GET 变量,我想检查它是否实际上是有效格式,也不是过去的格式,即当前年份或之后的年份。到目前为止我所做的是:
$current_year=date('Y',$today);
(is_int(intval($_GET['year'])) AND $_GET['year']>$current_year) ? $year=$_GET['year'] : $year=$current_year;
函数 intval() 返回 0 或 1,如 php.net 手册中所述,如果 GET-var 不是整数,例如字符串“abc”。
但是,如果 $_GET['year'] 包含“abc”,然后转换为 0 并且不应该 > 2012,那么 $year 不是 2012!?
任何提示将不胜感激,并在此先感谢您!
编辑:
感谢您的所有精彩回答!我已经尝试考虑所有这些,现在这对我来说非常有效:
if (ctype_digit($_GET['year'])) { ($_GET['year'] > $current_year && $_GET['year']<=($current_year+2)) ? $year=$_GET['year'] : $year=$current_year;} else {$year=$current_year;}
因为我只需要未来 2 年,所以我添加了这个……谢谢你提示检查它是否只有 4 位数字,deceze! :)
【问题讨论】:
标签: php if-statement int