php验证输入字符串中含有非法字符
$pattern = "/(&|"|<|>|')+/";
preg_match($pattern, $media_name, $matches);
var_dump($matches,$media_name); exit();
if($matches){
printJson(null,-12,'来源媒体名称含有非法字符,请重新输入');
}
一、利用正则表达式验证中文 注意UTF8编码和GB2312有所不同。 1.UTF8下的中文验证
$str1 = "编程"; $str = "php编程";
if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) { print("该字符串全部是中文"); } else {
print("该字符串不全部是中文"); }
2.GB2312下中文的验证
if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $st_name){ print("该字符串全部是中文"); } else {
print("该字符串不全部是中文"); }
PHP中用正则表达式验证中文的有以下问题需注意
例如:
str = '中华人民共和国123456789abcdefg';
echo preg_match("/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}",strName);
运行一下上面这段代码,看会有什么提示信息?
Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php\test.php on line 2
原来,PHP正则表达式中不支持下列 Perl 转义序列:\L, \l, \N, \P, \p, \U, \u, or \X
在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。 所以,可以这样来解决
preg_match("/^[\x80-\xff_a-zA-Z0-9]{3,15}",strName);
一开始很是疑惑\x80-\xff只能匹配128个字符怎么就可以匹配成千上万的中文呢,原来\x80-\xff只是匹配中文双字节中的一个字节,
所以上面的正则表达式可以匹配范围是128*128个双字节字符
http://wenku.baidu.com/view/6149c98f84868762caaed53d.html
php匹配汉字、字母、数字、下划线:/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u
http://blog.csdn.net/lihaiboas1/article/details/7030735
最新文章
- (转)java中的进程与线程
- VendorNPC.lua --随身商人
- FreeBSD_11-系统管理——{Part_0-基础}
- VC++2010 中Debug和Release配置
- html5+php实现文件的断点续传ajax异步上传
- 设置SAPgui自动退出功能
- Junit简介和常用API
- 隐私模式启动IE 谷歌浏览器
- mapreduce 依赖组合
- Linux(CentOS6.7) 安装MySql5.7数据库
- svg制作风车旋转
- gulp 打包合并
- Asp.Net中使用JQueryEasyUI--善良公社项目
- Gradle 1.12用户指南翻译——第四十一章. 项目报告插件
- PDM:Training Models of Shape from Sets of Examples
- 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
- Notes : <;Hands-on ML with Sklearn &; TF>; Chapter 7
- vue2 mint-ui loadmore(下拉刷新)
- 第二种掌握的排序Q-Q
- jQuery获得页面绝对和相对的位置