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

Php 需要正则表达式来捕获url路径,php,regex,Php,Regex,我正在使用PHP,我一直在尝试创建一个正则表达式模式来捕获URL路径的一部分,但没有成功 可能的URL路径可以是以下任一路径: “产品/zzz” “yyyyyy/product/zzz” “xxxxx/YYYY/product/zzz” “xxxxx/yyyyyyyyy/../product/zzz”(…表示其他可能的词) 我需要捕捉的是“产品”之前的部分 对于第一种情况,结果应该是一个空字符串。 其余的是“YYYY”、“xxxxx/YYYYYY”和“xxxxx/YYYYYY/…” 这里有人

我正在使用PHP,我一直在尝试创建一个正则表达式模式来捕获URL路径的一部分,但没有成功

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

  • “产品/zzz”
  • “yyyyyy/product/zzz”
  • “xxxxx/YYYY/product/zzz”
  • “xxxxx/yyyyyyyyy/../product/zzz”(…表示其他可能的词)
我需要捕捉的是“产品”之前的部分

对于第一种情况,结果应该是一个空字符串。 其余的是“YYYY”、“xxxxx/YYYYYY”和“xxxxx/YYYYYY/…”

这里有人能给我个提示吗?谢谢

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

更新:

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

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

@SERPRO:它通过了你的“liveregexp”测试。 希望对您有所帮助。

这应该可以做到:

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

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

这应该适用于您:

#(.*?)/?product.*\b#
您可以在此处看到结果字符串的示例:


我会使用
解析url()


我似乎已经找到了一个解决方案,想和大家分享。请看我原始博文的最后一部分谢谢你的快速回答。但我需要处理任意数量的“xxx/”模式,而不仅仅是3个。您的模式匹配“xxx/product/abc”,但不匹配“xxx/yyy/product/abc”,也不匹配“xxx/yyy/zzz/product/abc”。更简单的是:-)在OP寻找匹配项后,我更改了regexIt返回的
/
。。应该是
xx/yyy
而不是
xx/yyy/
现在它不匹配
product/zzz
foo/bar/product/meh/product/zzz;-)是的,但是使用了太多不必要的伏都教:-)我不知道“不必要的伏都教”是什么意思,但是regexp确实有效而且很容易阅读。@SERPRO你能告诉我结尾“\b”是什么意思吗?\b不是扩展的regex吗?
$path = parse_url($url, PHP_URL_PATH);
// Deal with $path to figure out what's after '/product/'