Url解析正则表达式

时间:2011-12-26 10:16:06

标签: php regex

我使用以下代码:

preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches);

解析url字符串。 有人可以解释一下这个表达式解析了什么吗? 因为它适用于/ example,但是使用/ example one,或/ example-one不再适用于$ matches [1]。谢谢!

1 个答案:

答案 0 :(得分:0)

它不起作用,因为\w匹配字母数字字符加下划线。它与连字符和空格不匹配。

简短解决方案:将它们添加到角色类,将\w转换为[\w -]

长解决方案:使用normal* (special normal*)*最小化回溯量,normal\wspecial[- ]

%^(\w+(?:[- ]\w+)*)(/(?:\w+(?:[- ]\w+)*))?$%