Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `preg_match()` Gagal dengan 'Julat Tidak Sah dalam Kelas Aksara' Selepas Peningkatan PHP?

Mengapakah `preg_match()` Gagal dengan 'Julat Tidak Sah dalam Kelas Aksara' Selepas Peningkatan PHP?

DDD
Lepaskan: 2024-12-09 01:11:10
asal
619 orang telah melayarinya

Why Does `preg_match()` Fail with

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)){
Salin selepas log masuk

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)){
Salin selepas log masuk

Ini meletakkan tanda sempang di permulaan kelas aksara, membenarkan ia digunakan dengan betul.

Tambahan Nota

  • Melepaskan tanda sempang dengan , seperti yang dicadangkan dalam jawapan yang disediakan, tidak lagi diperlukan dalam PHP 7.3 dan ke atas.
  • Pustaka PCRE2 mungkin memperkenalkan perubahan lain dalam biasa sintaks ungkapan. Adalah penting untuk menyemak dokumentasi dan membuat pelarasan yang diperlukan pada kod anda apabila menaik taraf kepada PHP 7.3 atau lebih baru.

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!

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