我有這段代碼在我的web應用程序的中間。PHP preg_match結合checkdat
if (preg_match ("/^[-0-9]/", $strDate) == TRUE)
{
$dateParts = explode("-", $strDate);
if (count($dateParts) === 3)
{
try
{
if (checkdate($dateParts[0], $dateParts[1], $dateParts[2]) === TRUE)
{
return TRUE;
}
}
catch (Exception $e)
{
//purposely blank for now.
}
}
}
我沒有任何包括周圍的代碼,因爲它是一個相當漫長的應用程序。首先,$strDate
變量我確切地知道那裏是什麼。我可以在if
聲明開始之前將其回顯出來。如果$strDate
是有效日期或「待定」的任意組合,則該語句按預期進行驗證。當無效日期進入功能時,問題就來了。
例如,
$strDate = '03-01-2017asdf';
有了這個投入我期望preg_match
趕上它,踢它出if
聲明。相反,它運行try-except,而php會拋出一個非形式的數字錯誤。任何想法我在這裏做錯了嗎?我確信它與我的preg_match
聲明有關。
很高興你添加了'$'符號,但日期模式仍然可能會更好。 – MaxZoom
是的,將日期匹配摺疊成圖案是下一步。我只是想先讓這部分工作。這完全奏效!謝謝!我知道這是一個小小的錯誤,只是無法弄清楚。在這裏和網絡上搜索幾個小時後,我放棄了,實際上問了一個問題。 –
@MaxZoom,您是否閱讀過我的答案? ;-) – trincot