Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Tidak Padanan Ungkapan Biasa Tarikh ISO PHP Saya?

Mengapa Tidak Padanan Ungkapan Biasa Tarikh ISO PHP Saya?

DDD
Lepaskan: 2024-12-13 05:39:08
asal
610 orang telah melayarinya

Why Isn't My PHP ISO Date Regular Expression Matching?

Mengapa Corak Padanan Tarikh ISO Saya?

Ungkapan biasa yang diberikan:

/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/
Salin selepas log masuk

direka bentuk untuk memadankan tarikh gaya ISO dalam format "YYYY-MM-DD HH:MM:SS." Walau bagaimanapun, ia kembali palsu walaupun memenuhi kriteria. Isunya terletak pada garis miring (/) yang melampirkan ungkapan.

Pembatas Ungkapan Biasa PHP

Dalam PHP, ungkapan biasa mesti disertakan dalam pembatas, biasanya garis miring (/ ), tetapi petikan berganda (") juga boleh digunakan. Pembatas / digunakan untuk menentukan permulaan dan akhir ungkapan biasa dan untuk mengelakkan konflik dengan watak istimewa lain dalam ungkapan.

Menyelesaikan Isu

Untuk menyelesaikan isu, pastikan perkara berikut:

  1. Betul Pembatas: Gunakan petikan berganda (") untuk melampirkan ungkapan biasa teks:
if(preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/", $date) >= 1)
Salin selepas log masuk
  1. Petikan Tunggal Dalam Ungkapan: Jika anda perlu menggunakan petikan tunggal dalam ungkapan biasa, lepaskan petikan itu dengan garis serong ke belakang ():
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) \'([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
Salin selepas log masuk

Pilihan Alternatif Menggunakan DateTime Kelas

Daripada menggunakan ungkapan biasa, pertimbangkan untuk menggunakan kelas PHP DateTime, yang menyediakan keupayaan pengesahan dan manipulasi tarikh yang lebih mantap dan boleh dipercayai:

function validateDate($date, $format = 'Y-m-d H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}
Salin selepas log masuk

Fungsi ini kembali benar untuk tarikh yang sah dan palsu untuk yang tidak sah. Ia boleh digunakan untuk mengesahkan tarikh dalam pelbagai format, termasuk ISO.

Atas ialah kandungan terperinci Mengapa Tidak Padanan Ungkapan Biasa Tarikh ISO PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan