我是靠谱客的博主 俊秀发卡,最近开发中收集的这篇文章主要介绍php+正则匹配qq,PHP中正则匹配中文,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要求:输入的内容需要满足的条件是:

1、允许输入字符:数字(0-9)、字母(a-z和A-Z)、汉字、下划线(_)、圆点(.)和空格;

2、姓名中间允许有空格;

3、下划线、圆点和空格均为英文状态输入法下的字符;

4、姓名前后不允许输入下划线、圆点、空格和特殊字符

$str = 'abc测试 ef';

if (preg_match('/^[a-zA-Z0-9u4e00-u9fa5]+$|^[a-zA-Z0-9u4e00-u9fa5][a-zA-Z0-9_s u4e00-u9fa5.]*[a-zA-Z0-9u4e00-u9fa5]+$/', $str)) {

echo "符合验证规则";

} else {

echo "不符合验证规则";

}

执行时报错:Severity: Warning

Message: preg_match() [function.preg-match]: Compilation failed: PCRE does not support L, l, N{name}, U, or u at offset 12

错误的大概意思是:preg_match()[函数。):编译失败:PCRE不支持L, I, N{名称}, U或u

后来试了几次,发现表达式中"u4e00-u9fa5" 匹配中文时出问题了,正常情况下匹配中文是这样写的啊,所以很纳闷,于是在网上搜了搜发现在PHP中 不支持这样的表达式匹配中文

网上在一篇“模式修正符”的文章中介绍到:

u(PCRE_UTF8)

此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 php 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起开始检查模式的 UTF-8 合法性。

既然是不兼容,那php中是如何匹配到中文呢?

仔细查了查发现php中utf-8编码下用正则表达式匹配汉字的最终正确表达式是:

/^[x{4e00}-x{9fa5}]+$/u

于是将“u4e00-u9fa5”替换成“x{4e00}-x{9fa5}”进行尝试。

if (preg_match('/^[a-zA-Z0-9x{4e00}-x{9fa5}]+$|^[a-zA-Z0-9x{4e00}-x{9fa5}][a-zA-Z0-9_s x{4e00}-x{9fa5}.]*[a-zA-Z0-9x{4e00}-x{9fa5}]+$/u', $str)) {

echo "符合验证规则";

} else {

echo "不符合验证规则";

}

互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。

更多PHP相关技术请搜索千锋PHP,做真实的自己,用良心做教育。。

最后

以上就是俊秀发卡为你收集整理的php+正则匹配qq,PHP中正则匹配中文的全部内容,希望文章能够帮你解决php+正则匹配qq,PHP中正则匹配中文所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部