Julat Tidak Sah dalam Kelas Aksara Selepas Peningkatan PHP
Ralat ini, "preg_match(): Penyusunan gagal: julat tidak sah dalam kelas aksara pada offset 20," biasanya berlaku apabila peningkatan PHP memperkenalkan perubahan pada enjin PCRE atau enjin Unicode yang digunakan dalam kod.
Penghijrahan PHP PCRE2
versi PHP 7.3 dan lebih baharu menggunakan PCRE2, yang memperkenalkan beberapa perubahan tidak serasi ke belakang. Satu perubahan sedemikian ialah pengesahan yang lebih ketat bagi corak kelas aksara.
Sempang dalam Kelas Watak
Sebelum ini, anda boleh melepaskan tanda sempang (-) dan menggunakannya di mana-mana sahaja dalam kelas watak. Walau bagaimanapun, dalam PHP 7.3 dan seterusnya, anda mesti meletakkan tanda sempang sama ada pada permulaan atau akhir kelas aksara sahaja.
Penyelesaian
Untuk menyelesaikan ralat ini, pastikan bahawa tanda sempang (-) diletakkan dengan betul dalam kelas aksara. Jika anda perlu menggunakan tanda sempang sebagai aksara dalam kelas, anda mesti melepaskannya (mis., -).
Contoh
// Invalid (in PHP 7.3+) preg_match("/^[a-z0-9]([0-9a-z_\-\s])+$/i", $subuser); // Valid (in PHP 7.3+) preg_match("/^[a-z0-9]([0-9a-z\-_\s])+$/i", $subuser);
Tambahan Pertimbangan
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'preg_match(): Penyusunan gagal: julat tidak sah dalam kelas aksara' Selepas Peningkatan PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!