Rumah > pembangunan bahagian belakang > tutorial php > Mengapa `preg_match()` Saya Gagal Selepas Peningkatan PHP?

Mengapa `preg_match()` Saya Gagal Selepas Peningkatan PHP?

Susan Sarandon
Lepaskan: 2024-12-18 19:40:15
asal
880 orang telah melayarinya

Why Does My `preg_match()` Fail After a PHP Upgrade?

preg_match() Kegagalan Penyusunan dalam Julat Kelas Aksara Akibat Peningkatan PHP

Ralat "preg_match(): Penyusunan gagal: julat tidak sah dalam kelas aksara di offset" sering berlaku apabila menggunakan fungsi preg_match PHP untuk mengesahkan nama pengguna alfanumerik. Ralat ini telah dilaporkan nyata selepas peningkatan PHP pada pelayan.

Isu ini berpunca daripada perubahan terbaru yang diperkenalkan dalam PHP 7.3 dan versi yang lebih baharu. PHP telah memindahkan enjin PCREnya kepada PCRE2, yang menghasilkan pengesahan corak yang lebih ketat. Khususnya, ia melibatkan penggunaan sempang (-) dalam kelas aksara.

Dalam versi PHP sebelum 7.3, adalah mungkin untuk menggunakan sempang dalam kelas aksara dengan melepaskannya atau meletakkannya pada permulaan atau akhir julat. Walau bagaimanapun, dalam PHP 7.3 dan kemudian, enjin PCRE2 telah mengetatkan keperluan ini.

Ralat berlaku kerana tanda sempang dalam kelas aksara [a-z0-9]([0-9a-z_-s]) $ bukan pada permulaan atau akhir julat. Ini menyebabkan kompilasi gagal.

Untuk menyelesaikan isu, anda harus mengubah suai kelas aksara seperti berikut:

/[a-z0-9]([0-9a-z-_ ]+)+/i
Salin selepas log masuk

Dengan meletakkan tanda sempang di hujung julat, ia akan menjadi ditafsirkan sebagai aksara literal dalam kelas, dan bukannya menunjukkan julat.

Adalah penting untuk ambil perhatian bahawa perubahan sintaks corak lain mungkin telah diperkenalkan dengan kemas kini kepada PHP 7.3. Untuk mendapatkan maklumat lanjut tentang perubahan ini dan cara ia boleh mempengaruhi kod anda, sila rujuk dokumentasi PHP rasmi tentang penghijrahan PCRE2.

Atas ialah kandungan terperinci Mengapa `preg_match()` Saya Gagal Selepas Peningkatan PHP?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan