2

使用 PHP / MySQL 全部编码为 UTF,我们最近不得不开始捕获非拉丁字符,例如中文等。我们有 PHP 验证来检查字符串长度和字母数字,例如:

if (!ereg("[[:alnum:]]{2,}",$_POST['company_name'])) {
    //error code here
}

这不适用于多字节字符。我了解长度是一个问题(一个字符不等于一个字节),但我希望是否有人可以提供一个链接/解决方案来匹配 UTF8 语言字符的字符串,没有特殊字符,例如[*/等。

编辑:我只想接受一个 xx 长的字符串,并且只包含语言字符 alebit 英语/中文等,而不是任何特殊字符*{/等。希望能澄清一下。

4

3 回答 3

1

您的要求有点模糊,但您只能强制使用字母(可能与标记组合)和十进制数字

if (!preg_match('/^[\p{L}\p{M}\p{Nd}]{2,}$/u', $_POST['company_name'])) {
   //error here
}
于 2010-08-26T11:38:04.157 回答
0

PHP的mbstring扩展有一个mb_ereg()函数,我猜这可能是一个很好的起点。

于 2010-08-26T11:38:23.780 回答
0

您可以尝试匹配,\p{L}|\p{N}但您需要将u选项添加到您的正则表达式。

资料来源:
www.regular-expressions.info

于 2010-08-26T11:40:40.693 回答