Php 需要正则表达式来捕获url路径
我正在使用PHP,我一直在尝试创建一个正则表达式模式来捕获URL路径的一部分,但没有成功 可能的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/…” 这里有人
- “产品/zzz”
- “yyyyyy/product/zzz”
- “xxxxx/YYYY/product/zzz”
- “xxxxx/yyyyyyyyy/../product/zzz”(…表示其他可能的词)
^(.*[^/]|)/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/'