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

标签 php regex url parameters capturing-group

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

我不知道如何单独捕获所有参数。我只需要满足于第一个捕获组并自己引爆它吗?如果我可以在一个正则表达式中完成所有工作,那么对于我的目的来说会更加优雅。

最佳答案

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);
?>

关于php - 使用正则表达式提取 URL 参数 - 重复捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762626/

相关文章:

http - 网址重定向;用于一般用途,最好是 : server-side or client-side?

php - 从数据库中删除不能正常工作

java - 具有多个分隔符的 Split()(不起作用)

php - 过滤数组

java - 以 postgresql 的确切单词正则表达式模式开头

Javascript - 添加验证模式以允许至少一个非空格字符

javascript - 正则表达式在 Javascript 中转换 URL

java - 为什么连接终止时不抛出异常?

php - 使用PHP将mysql数据解析为json

php - 为什么 PHP 在命名空间和自动加载方面对类和函数的处理方式不同?