我使用以下代码:
preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches);
解析url字符串。 有人可以解释一下这个表达式解析了什么吗? 因为它适用于/ example,但是使用/ example one,或/ example-one不再适用于$ matches [1]。谢谢!
答案 0 :(得分:0)
它不起作用,因为\w
匹配字母数字字符加下划线。它与连字符和空格不匹配。
简短解决方案:将它们添加到角色类,将\w
转换为[\w -]
。
长解决方案:使用normal* (special normal*)*
最小化回溯量,normal
为\w
且special
为[- ]
:
%^(\w+(?:[- ]\w+)*)(/(?:\w+(?:[- ]\w+)*))?$%