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!