Php 如何编写这样的url模式?
我需要我的路由器的URL模式,该模式将与:Php 如何编写这样的url模式?,php,regex,Php,Regex,我需要我的路由器的URL模式,该模式将与: /page_name.html /page_name.html/1 /page_name.html/2 .... /page_name.html/999 preg_match()必须将页面名称放入匹配项[1],斜杠后面的数字放入匹配项[2](或空字符串,索引[2]必须始终存在!) 我需要这个来匹配我的父亲: /page_name.html/ /page_name.html131 我写道: ^\/([\w\-]+)\.html[\/]?([\d]{1
/page_name.html
/page_name.html/1
/page_name.html/2
....
/page_name.html/999
preg_match()必须将页面名称放入匹配项[1],斜杠后面的数字放入匹配项[2](或空字符串,索引[2]必须始终存在!)
我需要这个来匹配我的父亲:
/page_name.html/
/page_name.html131
我写道:
^\/([\w\-]+)\.html[\/]?([\d]{1,3})?$/
但它匹配URL,如/page_name.html123,如果没有数字,则不会将任何内容放入匹配[2]中。您可以使用以下正则表达式:
preg_match('~^/([\w-]+)\.html(?|/(\d{1,3})|())$~', $matches, $input);
-此构造的每个备选方案中声明的子模式将从同一索引重新开始。这是为了确保始终使用某些内容填充(?|…)
,即使是空字符串$matches[2]
preg_match('~^/([\w-]+)\.html(?|/(\d{1,3})|())$~', $matches, $input);
-此构造的每个备选方案中声明的子模式将从同一索引重新开始。这是为了确保始终使用某些内容填充(?|…)
,即使是空字符串$matches[2]
^\/[^.]+\.html(\/\d{1,3})$
此正则表达式与所需内容匹配:^\/[^.]+\.html(\/\d{1,3})$