3
我想驗證應該保存爲日期的字符串。我希望用戶在此format ('d-m-Y)
的表單中提供日期。 我使用這個功能來檢查是否有有效日期給定:PHP不允許字符串日期格式爲d/m/Y
function isDateValid($birthdate)
{
$date = date('Y-m-d', $birthdate);
$stamp = strtotime(str_replace('/', '-', $date), $date);
if (!is_numeric($stamp))
return FALSE;
//checkdate(month, day, year)
if (checkdate(date('n', $stamp), date('d', $stamp), date('Y', $stamp)))
{
return TRUE;
}
return FALSE;
}
也能正常工作以這種形式d-M-Y的每個條目。但是當這樣的格式被賦予d/m/Y時,它仍然返回true,但日期在數據庫中保存爲m/d/Y。
我該怎麼做才能確保這種格式的'd/m/y'條目不可能保存在數據庫中。
在此先感謝
找到了解決辦法
好吧,我想我找到了解決辦法
if(!preg_match('/^(\d\d?)-(\d\d?)-(\d\d\d\d)$/', $birthdate, $matches))
{
return false;
}
return checkdate($matches[2], $matches[1], $matches[3]);
我檢查,如果正確的模式給予,在那之後我檢查它是否一個有效的日期。 這對我很好,所以,謝謝!
永遠不要讓用戶插入日期作爲文本,病程他們可能會插入你永遠無法想到的字符串。使用日期選擇器 – k102
如果月份和日期值都<= 12,則根本無法確定它們是否處於正確的順序。它們都代表有效日期。 – DaveRandom
不要在數據庫中使用字符串來存儲日期,使用適當的日期格式,那麼它與輸入日期的格式無關。或者,只要檢查有效年份是否小於100,如果是,那麼它是y格式而不是Y格式 – Anigel