忽略正则表达式URI段中的查询字符串


Ignore query string in URI segments with regular expression?

我有以下URI:

/host/segment1[?parm1=value1&param2=value2]/segment2/segment3[?parm1=value1&param2=value2]

正如你所看到的,我想提交方括号内的内容,就像它一样:

/host/segment1/segment2/segment3

编辑:方括号只是我想提交的内容的示例,它们实际上并不出现在片段中。一个真实的例子是:

/host/segment1?parm1=value1&param2=value2/segment2/segment3?parm1=value1&param2=value2

有可能用正则表达式实现这一点吗??

你可以这样做:

$result = preg_replace('~'?[^/]++~', '', $uri);

细节:

'?       question mark
[^/]++  all characters that are not a slash one or more times
~        used to delimite the regular expression