2011-11-16 125 views
2

我需要在我的网站上允许使用ctype_alnum的阿拉伯用户名来验证username字段。当我尝试使用阿拉伯用户名时,返回验证错误消息。 ctype_alnum不能将阿拉伯字符识别为字母和数字。我该如何解决这个问题?在ctype_alnum上使用阿拉伯字符

+0

ctype_alnum只能识别0-9A-Za-z,所以你需要使用正则表达式。 – Alasdair

+0

那么,没办法,我可以用ctype_alnum与阿拉伯语? – wfareed

+0

不,它不是一个阿尔诺。除非您将阿拉伯语转换为拉丁字母的等效字符,否则请选中此字样,然后再将其转换回来。 – Alasdair

回答

2

您可以使用这个表达式查找所有的阿拉伯字符:

preg_match("/^[a-zA-Z\p{Cyrillic}0-9\s\-]+$/u", $string); 

如果匹配的长度等于用户名长度它是一个阿拉伯语的用户名。

0

ctype_alnum只识别0-9A-Za-z。

您可以使用正则表达式(正如我在写这篇文章时发布的crothhass),或者您可以尝试将阿拉伯语转换为拉丁字母,请使用ctype_alnum检查此语句,然后再将其转换回来。

但我真正推荐的是从另一个方向看问题,只检查你不想要的字符。这可能是空格和一些标点符号,因为无论如何您都可能使用UTF-8并且可以接受其他任何内容。