為什麼我的 ISO 日期模式匹配失敗?
由於缺少前向,您提供的正規表示式無法正確匹配 ISO 樣式日期模式開頭和結尾處有斜線(“/”)。這些分隔符號在 PHP 的正規表示式語法中至關重要。更正後的模式應為:
/^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2}) (?P<hour>[1-2]{1}\d{1}):(?P<min>[0-5]{1}\d{1}):(?P<sec>[0-5]{1}\d{1})$/
此模式定義了年、月、日、小時、分鐘和秒的六個捕獲組。
替代方法:使用DateTime Class
雖然可以選擇使用正規表示式,但更優雅的解決方案是使用PHP 的DateTime class:
function validateDate($date, $format = 'Y-m-d H:i:s') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; }
此函數接受日期字串和可選格式。它使用 createFromFormat 方法建立一個 DateTime 對象,並檢查生成的對像是否有效並與原始日期匹配。
validateDate 函數提供了一種更強大、更通用的方法來驗證日期。它支援多種格式,並且可以驗證不同粒度等級的日期。
以上是為什麼我的 PHP ISO 日期正規表示式失敗,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!