Я пытаюсь написать достаточно разрешительный валидатор для имен в PHP, и моя первая попытка состоит из следующего шаблона:
// unicode letters, apostrophe, hyphen, space
$namePattern = "/^([\\p{L}'\\- ])+$/";
В конце концов это передается на вызов preg_match()
. Насколько я могу судить, это работает с вашим ванильным алфавитом ASCII, но, похоже, пытается напасть на более острые символы, такие как Ă или 张.
Что-то не так с самим шаблоном? Возможно, я ожидаю, что \p{L}
сделает больше работы, чем я думаю?
Или это имеет какое-то отношение к способу ввода ввода? Я не уверен, что это актуально, но я обязательно указал кодировку UTF8 на странице формы.