中国第一Ajax站长门户:www.okajax.com   虚拟主机 域名注册 云主机

PHP中正则中遇到的Unknown modifier问题 - okajax.com - Ajax中国

我要投稿 会员登陆 RSS订阅 本站推荐:
您的位置主页 > 网页编程 > Php > PHP中正则中遇到的Unknown modifier问题

PHP中正则中遇到的Unknown modifier问题

2011-07-04    文章来源:互联网    浏览次数:

项目中因为需要过滤字符,写了这样一行代码

  1. if (preg_match("/[\x21-\x26\x28-\x2C\x2F-\x30\x3C-\x5F\x61-\x7E]/"chr($chr))) 

只要执行,总会出现一个这样的提示“Warning: preg_match() [function.preg-match]: Unknown modifier ‘-’ in D:\WebRoot\idtest.php on line 31”并且执行结果不正确。纠结了很久才发现,只需要将表达式的双引号改成单引号就OK了。

  1. if (preg_match('/[\x21-\x26\x28-\x2C\x2F-\x30\x3C-\x5F\x61-\x7E]/'chr($chr))) 

原因是PHP会对用双引号包起来的字符进行解析例如:

  1. $str = '早上好';  
  2. echo "$str";// 这样就会在页面输出$str的内容“早上好”。而不是输出“$str” 

虽然知道原因了,但PHP是刚学的。至今不知道是那个字符被解析掉了。只能先记下这个经验:PHP中用正则表达式,一定要用单引号。

希望能给跟我一样正在纠结这个问题的同学一些帮助。

文章评论(查看全部)

看不清楚?单击换一张。
loading.. 评论加载中....
关于我们 - 广告服务 - 版权隐私 - 免责声明 - RSS地图 - 网站地图 - 使用帮助 - 返回顶部