我怎样才能在输入文本字段中只允许阿拉伯字符?

问题描述 投票:0回答:3

我已经在这里搜索并找到了与这篇文章相关的类似帖子,但我还没有找到解决方案。

我试过这个:

$text = "الحمد لله رب العالمين hello";

echo $is_arabic = preg_match('/\p{Arabic}/u', $text);

我添加了 unicode 标志,但如果我添加任何英文字符,它将返回 true !有什么解决办法吗?

大家有什么想法吗?

提前致谢

php regex arabic
3个回答
5
投票

使用 unicode 标志:

$text = "الحمد لله رب العالمين";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
                                   here __^

如果您只想匹配阿拉伯语,您应该这样做:

echo $is_arabic = preg_match('/^[\s\p{Arabic}]+$/u', $text);

3
投票

更新:我发现我对不支持的类显然是错误的(尽管文档上说“PCRE不支持诸如“Greek”或“InMusicalSymbols”之类的扩展属性”,但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);

0
投票

希望这对您有帮助。 要使输入接受阿拉伯字母,只有你可以尝试这个。

<input type="text" oninput="this.value = this.value.replace(/[^ءأ-ي ]/g, '').replace(/(\..*)(\s+)\..*/g, '$1');" />
© www.soinside.com 2019 - 2024. All rights reserved.