从url中提取字符串

时间:2013-08-29 12:03:36

标签: regex preg-match

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

我真的想在这里说不从字符串中提取网址。

让我说我的网址是这样的:

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

从上面的网址中,我必须分别提取param1param2个值,分别为2和字符串。

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

这就是我尝试的,像这样:

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

我对这种复杂的提取是全新的,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

看起来这些参数只是字母数字。如果是这样,我建议使用preg_match_all

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

regex101 demo

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

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

regex101 demo

ideone demo to show array results structure

答案 1 :(得分:0)

试试这个:

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

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

答案 2 :(得分:0)

这应该符合您的需求:

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

Regular expression visualization

Edit live on Debuggex

迭代比赛:

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

自己检查:demo