HTML表单验证 - 在PHP中过滤unicode(波斯语)字符而不使用preg_match()

时间:2013-08-25 16:45:24

标签: php regex unicode preg-match

我要验证HTML表单输入。输入应该只使用Unicode(波斯语)字母和数字。我像这样使用preg_match

preg_match('/^[آإأابپتثجچحخدذرزژسشصضطظعغفقکگلمنهۀةوؤیيئءًٌٍَُِّ\s]+$/u',$input);

并且它在localhost上工作正常,但由于我的主机没有安装了Unicode支持的PCRE,我不打算让他们为我安装它,我正在寻找另一种工作方式来实现这一点。

有没有办法可以在不使用preg_match()功能的情况下验证unicode输入?

重复标记

对于重复标记,我不是在PCRE之后,'preg_match'方式。链接的问题是PCRE'preg_match'方式。

1 个答案:

答案 0 :(得分:1)

当PCRE未使用PCRE_UTF8标志编译时,您可能会受益于某些特定multi-byte functions

mb_regex_encoding('UTF-8');
var_dump(mb_ereg('^[آ-یء\s]+$', "سلام پارسی تست می کنیم آإأابپتثجچحخدذرزژسشصضطظعغفقکگلمنهۀةوؤیيئًٌٍَُِّ"));
// int(1)

此处آ-ی字符范围包含的字符数多于波斯语(实际为U+0622 - U+06CC,请查看相应的Unicode table)另请注意,未指定分隔符。