2011-11-16 85 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並且可以接受其他任何內容。