【问题标题】:Extract URL parameters with regex - repeating a capture group使用正则表达式提取 URL 参数 - 重复捕获组
【发布时间】:2011-12-07 10:30:00
【问题描述】:

我正在尝试通过正则表达式提取 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

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

【问题讨论】:

  • 关于什么编程语言?正则表达式在不同的语言中有不同的风格。
  • 对不起,这是在 PHP 中(所以使用 PCRE)

标签: php regex url parameters capturing-group


【解决方案1】:
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);
?>

【讨论】:

    【解决方案2】:

    你试过parse_urlparse_str吗?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-25
        • 2018-09-30
        • 2012-02-21
        • 2017-09-13
        • 2011-03-11
        • 2017-01-07
        • 2019-12-19
        • 1970-01-01
        相关资源
        最近更新 更多