php正则匹配汉字:
$reg = '/^[\x{4e00}-\x{9fa5}]+$/u';
而不是
$reg = '/^[\u4e00-\u9fa5]+$/u';
PHP[PCRE]之Unicode
PCRE支持的16进制字符编码转义符有\x00-\xFF,或\x{num},num为任意位16进制数
但并不支持\u0000-\uFFFF这的形式
PCRE运用/u模式去处理UTF-8编码字符,这是PCRE特有的,示例代码
$str = '中123abcd个业上'; $pattern = '/[\x{4E10}-\x{4E2F}\x{4E0A}]/u'; $matchs = array(); $result = preg_match_all($pattern, $str, $matchs); var_dump($result, $matchs);
输出结果:
array (size=1) 0 => array (size=4) 0 => string '中' (length=3) 1 => string '个' (length=3) 2 => string '业' (length=3) 3 => string '上' (length=3)
示例,写一个正则校验昵称是否只包含数字、字母、下划线、汉字
//匹配 $nickname='陈先生123'; if (!preg_match("/^[0-9a-zA-Z _\x{4e00}-\x{9fa5}]+$/u", $nickname)) { echo '昵称不应包含特殊字符'; } else { echo 'success'; }
作者心情:昨夜西风凋碧树,独上高楼,望尽天涯路。
如无特殊说明,文章均为本站原创,转载请注明出处
- 转载请注明来源:php正则匹配汉字
- 本文永久链接地址:http://icehill.cn/post/single/info/228.html