用于在PHP中从URL中提取查询字符串参数值的正则表达式

2022-03-29 00:00:00 php preg-match
我需要从URL中提取项ID;模式如下 &;R=10031004&;,我的意思是,我需要提取&;R=中的字符串和另一个中的

这就是我到目前为止的所有信息,但我不断收到错误。

preg_match('^[&R=]+ &$',
"http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches);
$host = $matches[0];

echo $host;

解决方案

$url = 'http://www.lapdirecciondemario.com/items.php&R=10031004&';
preg_match('/(&|?)R=([0-9]+)/i', $url, $matches);
echo $matches[2];
与其他答案相比,如果参数R前面是?而不是&,则也会匹配。如果您知道更多关于数字长度的信息,可以将[0-9]之后的+替换为{min,max}

此正则表达式应该非常健壮,并与以下所有内容匹配:

  • http://www.lapdirecciondemario.com/items.php&R=10031004
  • http://www.lapdirecciondemario.com/items.php?foo=bar&R=10031004
  • http://www.lapdirecciondemario.com/items.php?R=10031004
  • http://www.lapdirecciondemario.com/items.php?R=10031004&something=else
  • http://www.lapdirecciondemario.com/items.php&R=10031004#more-here

相关文章