Соответствие буквенным символам Unicode в PCRE / PHP

Я пытаюсь написать достаточно разрешающий валидатор для имен в PHP, и моя первая попытка состоит из следующего шаблона:

// unicode letters, apostrophe, hyphen, space
$namePattern = "/^([\\p{L}'\\- ])+$/";

Это в конечном итоге передается вызову preg_match () . Насколько я могу судить, это работает с вашим ванильным алфавитом ASCII, но, кажется, сбивает с толку более острые символы, такие как Ă или 张.

Что-то не так с самим шаблоном? Возможно, я ожидаю, что \ p {L} выполнит больше работы, чем я думаю?

Или это как-то связано со способом ввода не уверен, уместно ли это, но я обязательно указал кодировку UTF8 на странице формы.

14
задан tchrist 29 March 2012 в 18:13
поделиться