0

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

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

  • “产品/zzz”
  • “yyyyyyyy/产品/zzz”
  • “xxxxx/yyyyyyyy/产品/zzz”
  • “xxxxx/yyyyyyyy/.../product/zzz”(...表示其他可能的词)

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

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

这里有人可以给我提示吗?谢谢!

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

更新:

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

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

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

4

3 回答 3

1

我会使用parse_url()

$path = parse_url($url, PHP_URL_PATH);
// Deal with $path to figure out what's after '/product/'
于 2013-03-12T16:27:23.230 回答
0

这应该适合你:

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

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

http://xrg.es/#5awa10

于 2013-03-12T16:26:40.593 回答
0

这应该这样做:

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

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

于 2013-03-12T16:14:58.887 回答