Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Ungkapan Biasa Tarikh ISO PHP Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Ungkapan Biasa Tarikh ISO PHP Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Linda Hamiltonasal
2024-12-29 12:22:10411semak imbas

Why is My PHP ISO Date Regular Expression Failing, and How Can I Fix It?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn