繁体   English   中英

PHP 正则表达式 url 匹配

[英]PHP regex url matching

我有一些例子:

mysite.com/tag/HD+Wallpaper           //match
mysite.com/tag/HD+Wallpaper/          //match
mysite.com/tag/HD+Wallpaper?page=     //match
mysite.com/tag/HD+Wallpaper/?page=    //match
  
mysite.com/tag/HD+Wallpaper/sdadasdas    //not match

与“高清+壁纸”是一个参数

我尝试:

^tag/(.+?)(|\/|\?(.*?))$i

我该如何解决?

您可以尝试遵循正则表达式

tag\/.*?(?=\/|\?|$)

演示

注意:在演示中,我添加了反斜杠 \ 来转义 /

这个正则表达式应该适合你:

tag\/([^\/]*?)(?=\/$|\/\?|\?|$)

演示

你可能会使用

tag/[^/\s]+(?:/(?:\?.*)?)?$

解释

  • tag/从字面上匹配(也许/tag/\btag会更具体)
  • [^/\s]+匹配除/或空白字符之外的任何字符的 1+ 次出现
  • (?:非捕获组
    • /(?:\?.*)? 匹配/后跟一个可选部分来匹配? 和字符串的 rest
  • )? 关闭组并使其可选
  • $字符串结尾

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM