Php 如何仅使用正则表达式从URL中提取参数值

Php 如何仅使用正则表达式从URL中提取参数值,php,regex,Php,Regex,使用正则表达式从此URL提取u2参数的值 输出:- u2=HA853 如何仅检索HA853?组是正则表达式匹配的所有内容,因此可以使用\K忽略正则表达式之前的匹配 $subject="http://www.example.com?u1=US&u2=HA853&u3=HPA"; //my url $pattern='/u2=\K[0-9A-Za-z]*/'; //R.E that url value is only digit/Alphabet preg_match($pat

使用正则表达式从此URL提取u2参数的值


输出:- u2=HA853


如何仅检索HA853?

组是正则表达式匹配的所有内容,因此可以使用
\K
忽略正则表达式之前的匹配

$subject="http://www.example.com?u1=US&u2=HA853&u3=HPA"; //my url
$pattern='/u2=\K[0-9A-Za-z]*/'; //R.E that url value is only digit/Alphabet 
preg_match($pattern,$subject,$match);
print_r($match[0]);
或者使用第二个捕获组:

...
$pattern='/u2=([0-9A-Za-z]*)/'; //R.E that url value is only digit/Alphabet 
...
print_r($match[1]);
虽然我不清楚为什么你需要这么做,但这似乎是一个更简单的方法

$subject="http://www.example.com?u1=US&u2=HA853&u3=HPA";
parse_str($subject, $output);
echo $output['u2'];

演示:

另一种方法是使用parse\u url


为什么要使用正则表达式?只需使用$_GET['u2']就可以复制我试图只使用正则表达式来获得结果expressions@FirstOne我同意parse_Str是最好的谢谢。第二个捕获小组为我工作。实际上,我只是尝试使用正则表达式来检索值,所以我已经这样做了。
$subject="http://www.example.com?u1=US&u2=HA853&u3=HPA";
parse_str($subject, $output);
echo $output['u2'];
  $subject="http://www.example.com?u1=US&u2=HA853&u3=HPA";
  $query_string  = parse_url($subject, PHP_URL_QUERY); // get query string
  $parameters  = explode('&', $query_string); //Explode with &
  $array  = array();  // define an empty array
  foreach($parameters  as $val)
   {
    $param= explode('=', $val);
    $array[$param[0]] = $param[1];
   }
  echo $array['u2']; // outputs HA853

print_r($array);

Array
(
    [u1] => US
    [u2] => HA853
    [u3] => HPA
)