使用正则表达式提取 URL 参数 - 重复捕获组

发布于 2024-12-09 15:37:06 字数 510 浏览 1 评论 0原文

我正在尝试通过正则表达式提取 URL 参数,并且非常接近让它工作。我什至知道问题是什么:我的正则表达式在重复的捕获组上遇到了困难。但我根本不知道如何解决它。

语言是PHP。

我的网址类似于下面的网址。它可以没有参数,只有一个或多个:

member.php?action=bla&arg=2&test=15&schedule=16

我的正则表达式如下所示:

member\.php((?:[\?|&](\w*)=(\w*))*)

我的捕获组最终是:

1. action=bla&arg=2&test=15&schedule=16
2. schedule
3. 16

我无法弄清楚如何单独捕获所有参数。我是否只能满足于第一个捕获组并自己爆炸它?如果我可以在一个正则表达式中完成所有工作,那么对于我的目的来说会更加优雅。

I'm attempting to extract the URL parameters via regex and am sooo close to getting it to work. I even know what the problem is: my regex is stumbling on repeated capture groups. But I simply cannot figure out how to fix it.

Language is PHP.

My URL looks something like the one below. It can have no parameters, just one or multiple:

member.php?action=bla&arg=2&test=15&schedule=16

My regex looks like this:

member\.php((?:[\?|&](\w*)=(\w*))*)

And my capture groups end up being:

1. action=bla&arg=2&test=15&schedule=16
2. schedule
3. 16

I cannot figure out how to capture all the parameters individually. Will I just have to settle for the first capture group and explode it myself? It would be much more elegant for my purposes if I can do all the work inside one regex.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

極樂鬼 2024-12-16 15:37:06
try:
<?php
$str="member.php?action=bla&arg=2&test=15&schedule=16#test";
preg_match_all('/([^?&=#]+)=([^&#]*)/',$str,$m);
print_r($m);

//combine the keys and values onto an assoc array
$data=array_combine( $m[1], $m[2]);
print_r($data);
?>
try:
<?php
$str="member.php?action=bla&arg=2&test=15&schedule=16#test";
preg_match_all('/([^?&=#]+)=([^&#]*)/',$str,$m);
print_r($m);

//combine the keys and values onto an assoc array
$data=array_combine( $m[1], $m[2]);
print_r($data);
?>
素手挽清风 2024-12-16 15:37:06

您是否尝试过 parse_urlparse_str

Have you tried parse_url and parse_str ?

此生挚爱伱 2024-12-16 15:37:06

使用-> 提取参数及其值&[\w]*=[\d]*

Extract parameters and their values with-> &[\w]*=[\d]*

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文