if (preg_match('/(\w)\1{2,}/', utf8_decode($name)))
return t('3 Repeated charachter Are not allowed');
正常工作以防止拉丁字符连续重复超过2次..
问题是代码不适用于阿拉伯语编码>>请帮助狐狸..抱歉我的英语很差
答案 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字符串。