Loving Coding & Visual Design
RewriteRule里正则表达式减号字符的顺序问题
在用URLRewrite的时候,PHP正则匹配(preg_match)的时候,常常有一个容易忽略的小问题:
仅仅是因为方括号内减号(-)字符顺序的不同,让正则匹配失效。
但这又不是普遍的问题,只是在个别虚拟主机上出现。
下面的解释可以帮我们释疑:
有效:RewriteRule ([0-9a-zA-Z+_.-]{3,})/$ /article-$1.html [L]
无效:RewriteRule ([0-9a-zA-Z-+_.]{3,})/$ /article-$1.html [L]
仅仅是因为方括号内减号(-)字符顺序的不同,让正则匹配失效。
但这又不是普遍的问题,只是在个别虚拟主机上出现。
下面的解释可以帮我们释疑:
正则表达式通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。
减号(-)字符可以在字符类中指定一个字符范围。例如,[d-m] 匹配了 d 和 m 之间的任何字符,包括两者。如果字符类中需要减号本身,则必须用反斜线转义或者放到一个不能被解释为指定范围的位置,典型的位置是字符类中的第一个或最后一个字符。
最 近 文 章
- 网页在GreenBrowser下的兼容问题 - Wed, 26 May 2010 15:16:48 +0000
- FireFox4将带给我们什么? - Thu, 13 May 2010 05:16:05 +0000
- 设置Apache禁止通过IP访问服务器 - Wed, 12 May 2010 04:55:18 +0000
- Godaddy的.COM和.NET域名即将涨价 - Wed, 05 May 2010 04:04:55 +0000
- 六年了,总结一个英文网站的SEO之路 - Sun, 02 May 2010 11:27:16 +0000
- Discuz7的图片附件不能显示的问题 - Wed, 28 Apr 2010 15:51:31 +0000
- Red Hat Enterprise AS 4安装DirectAdmin - Wed, 14 Apr 2010 04:00:47 +0000
- Are you ready for WebGL? - Wed, 24 Feb 2010 06:04:03 +0000
- WebGL三维示例和Js版Box2D物理引擎 - Sun, 21 Feb 2010 03:58:44 +0000
- FLash与HTML5 - Fri, 05 Feb 2010 08:28:02 +0000