0

我需要一些帮助来编写一个正则表达式来从 URL中提取几个字符串(比如说 2 个字段) 。

我真的想说这里不要从字符串中提取 URL。

可以说我的网址是这样的:

http:// example.com/conversion/?param1=dhkw121?param2=dhja143&uuid=jsbdwbjb-fwjdbw-wdvvw-wj

或者 URL 类型可以是这样的:

http:// example.com/conversion/param1=dhkw121%uuid=dbjbjbcs-fbsj-fsjbjs-fsj /param2=dhja143

从上面的 URL 中,我必须单独提取param1param2值这 2 和字符串。

我尝试在 PHP 中使用正则表达式阅读一些东西,但似乎它不仅仅是正则表达式,它更多地包含在反向引用和东西中。

这是我尝试过的,是这样的:

.*(param1\=.*param2\=.*)\&?.*

我对这种复杂的提取完全陌生,有人可以帮我吗?

4

3 回答 3

2

似乎参数只是字母数字。如果是这样,我建议使用preg_match_all

preg_match_all("/param[12]=(\w+)/", $url, $results);

正则表达式 101 演示

或者,如果您想从数组中获取它们作为元素 1 和 2:

preg_match_all("/param1=(\w+).*?param2=(\w+)/", $url, $results);

正则表达式 101 演示

ideone 演示显示数组结果结构

于 2013-08-29T12:09:52.130 回答
0

尝试这个:

param1=([^&]+).*param2=([^&]+)

param1 值将在组 1 中,param2 值在 grpup 2 中。

于 2013-08-29T12:05:43.597 回答
0

这应该适合您的需求:

(param1|param2|anyotherparam)=([^/?&]+)

正则表达式可视化

在 Debuggex 上实时编辑

遍历匹配:

  • 第一组 #1 包含参数的名称
  • 第二组包含它的值

自己检查:演示

于 2013-08-29T12:32:41.630 回答