使用PHP / MySQL全部编码为UTF,我们最近不得不开始捕获非拉丁字符,例如中文等。我们有PHP验证,检查字符串长度和字母数字,如:
if (!ereg("[[:alnum:]]{2,}",$_POST['company_name'])) {
//error code here
}
这不适用于多字节字符。我理解长度是一个问题(一个字符不等于一个字节)但我希望有人能提供链接/解决方案来匹配UTF8语言字符的字符串只有[*/
等特殊字符
编辑:我只想接受一个xx长的字符串,只包含英文/中文等语言字符,而不是任何特殊字符*{/
等。希望澄清。
答案 0 :(得分:1)
您的要求有点模糊,但您只能强制执行字母(可能与标记结合使用)和十进制数字
if (!preg_match('/^[\p{L}\p{M}\p{Nd}]{2,}$/u', $_POST['company_name'])) {
//error here
}
答案 1 :(得分:0)
PHP的 mbstring 扩展名有一个mb_ereg()函数,我想这可能是一个很好的起点。
答案 2 :(得分:0)
您可以尝试与\p{L}|\p{N}
匹配,但需要在正则表达式中添加u
选项。