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

Mengapa Corak PCRE Saya Tidak Padan dengan Huruf Unicode dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 16:21:11137semak imbas

Why Doesn't My PCRE Pattern Match Unicode Letters in PHP?

Menyahkod Unikod Huruf Matching Conundrum dalam PCRE/PHP

Seorang pembangun menghadapi kesukaran dalam mengesahkan nama menggunakan PCRE dalam PHP, khususnya dengan bukan ASCII aksara seperti Ă atau 张. Corak awal mereka, "/^([p{L}'- ]) $/", gagal menangkap aksara ini, membawa kepada syak sama ada corak atau pengendalian input mungkin menjadi puncanya.

Kepada jelaskan isu itu, mari kita periksa coraknya. p{L} ialah trengkas sifat aksara Unicode untuk mana-mana huruf Unicode. Walau bagaimanapun, ia memerlukan mod UTF-8 untuk berfungsi dengan betul. Secara lalai, PHP beroperasi dalam mod sensitif huruf besar dan bukan Unikod.

Nampaknya, pembangun telah mengabaikan untuk menentukan pengubah suai "u" dalam corak mereka. Pengubah suai ini mendayakan sokongan Unikod, membenarkan sifat aksara seperti p{L} berfungsi seperti yang dimaksudkan.

Untuk menyelesaikan isu, kemas kini corak:

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

Dengan menambahkan pengubah suai "u" , corak kini akan memadankan dengan tepat aksara huruf Unicode, termasuk daripada abjad bukan ASCII, memastikan kejayaan pengesahan nama dengan aksara seperti Ă dan张.

Atas ialah kandungan terperinci Mengapa Corak PCRE Saya Tidak Padan dengan Huruf Unicode dalam PHP?. 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