preg_match(): Julat Tidak Sah dalam Kelas Aksara Selepas Peningkatan PHP
Ralat "preg_match(): Penyusunan gagal: julat tidak sah dalam aksara class at offset" biasanya berlaku apabila tanda sempang (-) digunakan secara tidak betul dalam kelas aksara dalam kelas biasa ungkapan.
Dalam coretan kod yang disediakan:
else if(!preg_match("/^[a-z0-9]([0-9a-z_-\s])+$/i", $subuser)){
Terdapat tanda sempang "-" dalam kelas aksara [0-9a-z_-s]. Dalam versi PHP yang lebih lama, melepaskan tanda sempang dengan sengkang ke belakang , atau meletakkannya pada permulaan atau akhir kelas aksara, membenarkan penggunaannya.
Perubahan PHP 7.3 dan PCRE2
Walau bagaimanapun, dengan PHP 7.3 dan pemindahan ke pustaka PCRE2, penggunaan tanda sempang lebih terhad. Dalam PCRE2, sempang hanya boleh digunakan pada permulaan atau akhir kelas aksara.
Untuk menyelesaikan isu ini, ubah suai kelas aksara seperti berikut:
else if(!preg_match("/^[a-z0-9]([0-9a-z_0-9_-])+$/i", $subuser)){
Ini meletakkan tanda sempang di permulaan kelas aksara, membenarkan ia digunakan dengan betul.
Tambahan Nota
Atas ialah kandungan terperinci Mengapakah `preg_match()` Gagal dengan 'Julat Tidak Sah dalam Kelas Aksara' Selepas Peningkatan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!