2017-12-04 5 views
1

正規表現を使用して、このURLからu2パラメータの値を抽出します。 http://www.example.com?u1=US&u2=HA853&u3=HPAURLからのみパラメータ値を抽出する方法正規表現

<?php 
$subject="http://www.example.com?u1=US&u2=HA853&u3=HPA"; //my url 
$pattern='/u2=[0-9A-Za-z]*/'; //R.E that url value is only digit/Alphabet 
preg_match($pattern,$subject,$match); 
print_r($match[0]); 
?> 

出力: - U2 = HA853

どのように私はHA853を取得することができますか?

... 
$pattern='/u2=([0-9A-Za-z]*)/'; //R.E that url value is only digit/Alphabet 
... 
print_r($match[1]); 

なぜ」:

+4

http://php.net/manual/en/function.parse-url.phpはなぜ正規表現を使用するように、でもparse_urlを使用することですか? $ _GET ['u2']を使用する –

+0

[DBに格納されたURLの変数から変数を引き出す]の可能な複製(https://stackoverflow.com/questions/3874380/pulling-variable-from-variable-in-url-stored -in-db) – mickmackusa

+0

私は正規表現を使用して結果を達成しようとしていました –

答えて

1

0グループは、正規表現は非常にいずれかの正規表現の前の試合を無視する\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]); 

または第二のキャプチャグループを使用していますdは私にはわかりませんが、それをする必要があります、http://php.net/manual/en/function.parse-str.php、より簡単なアプローチのようです。

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

デモ:https://3v4l.org/gR4cb

+0

ありがとう。第二の捕獲集団が私のために働いた。実際には、正規表現だけを使って値を取得しようとしていました。 –

1

他の方法は、

$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 
) 
+0

[parse_str](http://php.net/manual/en/function.parse-str.php) – FirstOne

+1

@FirstOne parse_Strが最適です –

関連する問題