Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Ungkapan Biasa Tarikh ISO PHP Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?
Mengapa Padanan Corak Tarikh ISO Saya Gagal?
Ungkapan biasa yang anda berikan tidak sepadan dengan tarikh gaya ISO kerana tiada ke hadapan garis miring ("/") pada permulaan dan penghujung corak. Pembatas ini penting dalam sintaks regex PHP. Corak yang diperbetulkan hendaklah:
/^(?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})$/
Corak ini mentakrifkan enam kumpulan tangkapan untuk tahun, bulan, hari, jam, minit dan saat.
Pendekatan Alternatif: Menggunakan DateTime Kelas
Walaupun menggunakan regex boleh menjadi pilihan, penyelesaian yang lebih elegan ialah menggunakan DateTime PHP kelas:
function validateDate($date, $format = 'Y-m-d H:i:s') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; }
Fungsi ini menerima rentetan tarikh dan format pilihan. Ia menggunakan kaedah createFromFormat untuk mencipta objek DateTime dan menyemak sama ada objek yang dijana itu sah dan sepadan dengan tarikh asal.
Fungsi validateDate menyediakan cara yang lebih mantap dan serba boleh untuk mengesahkan tarikh. Ia menyokong pelbagai format dan boleh mengesahkan tarikh dengan pelbagai tahap kebutiran.
Atas ialah kandungan terperinci Mengapa Ungkapan Biasa Tarikh ISO PHP Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!