需要正则表达式来捕获url路径

时间:2013-03-12 16:12:35

标签: php regex

我正在使用PHP,我一直在尝试创建一个正则表达式模式来捕获部分URL路径,但无济于事。

可能的URL路径可以是以下任何一种:

  • “product / zzz”
  • “YYYYYYYY /产品/ ZZZ”
  • “XXXXX / YYYYYYYY /产品/ ZZZ”
  • “xxxxx / yyyyyyyy /.../ product / zzz”(...表示其他可能的字样)

我需要捕获的是“产品”之前的部分。

对于第一种情况,结果应该是一个空字符串。 其余的,他们是“yyyyyyyy”,“xxxxx / yyyyyyyy”和“xxxxx / yyyyyyyy /...”

这里的任何人都可以给我提示吗?谢谢!

PS。 看起来我想要的部分是重复相同的模式“xxxx /”。但我不擅长使用正则表达式组。

更新

我可能通过捕获具有零次或多次重复的模式“xxx /”找到了解决方案:“([^ /] + /)*”

所以完整的正则表达式应该是“(([^ /] + /)*)product /([^ /] +)”

@SERPRO:它在你的“Live RegExp”中通过了测试。 希望它有所帮助。

3 个答案:

答案 0 :(得分:1)

我会使用parse_url()

$path = parse_url($url, PHP_URL_PATH);
// Deal with $path to figure out what's after '/product/'

答案 1 :(得分:0)

这应该这样做:

^(.*[^/]|)/*product/[^/]+/*$

它还允许在路径末尾添加任意数量的斜杠。 括号内的部分是你的结果。

答案 2 :(得分:0)

这应该适合你:

#(.*?)/?product.*\b#

您可以在此处查看结果字符串的示例:

http://xrg.es/#5awa10