我已經在這裏搜索,發現與這篇文章相關的類似帖子,但我還沒有找到解決方案。如何在輸入文本字段中只允許阿拉伯字符?
我想這:
$text = "الحمد لله رب العالمين hello";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
我添加Unicode標誌,但如果我添加任何英文字符則返回true!對此的任何修復?
任何想法的人?
在此先感謝
我已經在這裏搜索,發現與這篇文章相關的類似帖子,但我還沒有找到解決方案。如何在輸入文本字段中只允許阿拉伯字符?
我想這:
$text = "الحمد لله رب العالمين hello";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
我添加Unicode標誌,但如果我添加任何英文字符則返回true!對此的任何修復?
任何想法的人?
在此先感謝
使用Unicode標誌:
$text = "الحمد لله رب العالمين";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
here __^
如果你想只匹配阿拉伯語,你應該做的:
echo $is_arabic = preg_match('/^[\s\p{Arabic}]+$/u', $text);
更新:我看到我顯然錯了不被支持的(類雖然該文檔在說「擴展屬性,如‘希臘’或‘InMusicalSymbols’不被PCRE支持」,但評論http://php.net/manual/en/regexp.reference.unicode.php#102756說他們支持),所以我猜M42是更好的答案。他們可以,但是,可以與範圍進行如下:
$text = "الحمد لله رب العالمين";
echo $is_arabic =
preg_match('/^[\s\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{08A0}-\x{08FF}\x{FB50}-\x{FDFF}\x{FE70}-\x{FEFF}\x{10E60}\x{10E60}—\x{10E7F}\x{1EE00}—\x{1EEFF}]+$/u', $text);
這僅僅是酷,返回1 :)感謝您的幫助 – wfareed
這是一個很好的答案,非常感謝:) – wfareed
Opsss!還有另一個問題,如果我添加任何英文字符的字符串,它將返回true!爲什麼? – wfareed
需要是'的preg_match( '/^[\ S \ p {}阿拉伯文] + $/U',$文本);' –