如何使用preg_match来防止重复字符(阿拉伯语编码)?

时间:2014-09-23 20:08:07

标签: php encoding character-encoding preg-match arabic

if (preg_match('/(\w)\1{2,}/', utf8_decode($name)))
    return t('3 Repeated charachter Are not allowed');

正常工作以防止拉丁字符连续重复超过2次..

问题是代码不适用于阿拉伯语编码>>请帮助狐狸..抱歉我的英语很差

1 个答案:

答案 0 :(得分:0)

您只需要在模式的末尾添加u修饰符:

if (preg_match('/(\w)\1{2,}/u', $name))
    return t('3 Repeated charachter Are not allowed')

u修饰符会更改\w字符类的含义。默认情况下,\w字符类代表[a-zA-Z0-9_],但使用u修饰符,它变为[\p{L}\p{N}_]

换句话说,它包含所有unicode字母,数字和下划线。

u修饰符也强制正则表达式引擎将模式字符串视为unicode字符串。