I need to allow Arabic usernames on my website which is already using ctype_alnum
to validate the username
field. When I try to use Arabic usernames,
ctype_alnum only recognizes 0-9A-Za-z.
You can either use regular expressions (as crothhass posted while I was writing this), or you can attempt to convert Arabic into Latin alphabet, check this with ctype_alnum, then convert it back again.
But what I actually recommend is to look at the problem from the other direction, and just check for characters that you DON'T want. This is probably spaces and some punctuation, since you are likely using UTF-8 anyway and can accept anything else.
You can find all Arabic Characters by using this Regex:
preg_match("/^[a-zA-Z\p{Cyrillic}0-9\s\-]+$/u", $string);
If the matched length equals the username length it is an arabic username.