Rumah >pembangunan bahagian belakang >tutorial php >Mengapa PHP Regex Saya Tidak Padan dengan Huruf Unicode?

Mengapa PHP Regex Saya Tidak Padan dengan Huruf Unicode?

DDD
DDDasal
2024-12-18 16:43:11789semak imbas

Why Doesn't My PHP Regex Match Unicode Letters?

Padanan Aksara Unikod dalam PCRE/PHP: Pemahaman Disemak

Dalam percubaan untuk membangunkan pengesah nama yang fleksibel, corak PHP telah dibangunkan untuk memadankan aksara huruf Unicode, apostrof, sempang dan spaces:

$namePattern = "/^([\p{L}'\- ])+$/";

Walau bagaimanapun, corak ini telah menghadapi masalah apabila menemui aksara bukan ASCII seperti Ă atau 张. Untuk membetulkan perkara ini, pandangan berikut mesti dipertimbangkan:

1. Pengubahsuai Unikod: Isu utama ialah ketiadaan pengubah u, yang penting untuk mengaktifkan sokongan Unikod dalam PCRE/PHP. Tanpa pengubah suai ini, sifat aksara Unicode menjadi tidak tersedia.

2. Corak Dibetulkan: Corak yang diperbetulkan, termasuk pengubah u, adalah seperti berikut:

$namePattern = '/^[-\' \p{L}]+$/u';

Dengan menggabungkan pengubahsuaian ini, corak kini boleh memadankan aksara huruf Unicode dengan berkesan, memastikan keserasian dengan julat yang lebih luas input.

Atas ialah kandungan terperinci Mengapa PHP Regex Saya Tidak Padan dengan Huruf Unicode?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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