Мне нужно разрешить арабские имена пользователей на моем веб-сайте, которые уже используют ctype_alnum
для проверки поля username
. Когда я пытаюсь использовать арабские имена пользователей, возвращается сообщение об ошибке проверки. ctype_alnum
не распознает арабские символы как буквы и цифры. Как я могу обойти это?
Вы можете найти все арабские символы, используя это Regex:
preg_match("/^[a-zA-Z\p{Cyrillic}0-9\s\-]+$/u", $string);
Если согласованная длина равна длине имени пользователя, это арабское имя пользователя.
ctype_alnum распознает только 0-9A-Za-z.
Вы можете либо использовать регулярные выражения (как писал crothhass, когда я писал это), либо вы можете попытаться преобразовать арабский язык в латинский алфавит, проверьте это с помощью ctype_alnum, а затем переведите обратно.
Но то, что я на самом деле рекомендую, – это посмотреть на проблему с другого направления и просто проверить символы, которые вы НЕ хотите. Это, вероятно, пробелы и некоторые знаки пунктуации, так как вы, вероятно, используете UTF-8 в любом случае и можете принимать что-либо еще.