也許是一個非常簡單的問題,但我不知道我做錯了什麼,也許有人可以幫助我?php if-statement:0> 2012?
有一個包含年份的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位數,那麼! :)
是不是必須使用ctype_digit($ _GET ['year'])> $ current_year – 2012-02-21 08:09:59
非常感謝你! @Sheikh Heera:爲什麼沒有必要? – Chris 2012-02-21 08:12:04
@Sheikh號''ctype_digit'返回'true'或'false'。我們只是檢查值是否是數值,如果是,是否大於當年。 – deceze 2012-02-21 08:13:15