我有这段代码在我的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