PHP で URL の文字列からパラメータを取得する方法

Minahil Noor 2023年1月30日
  1. PHP で URL 文字列からパラメータを取得するための parse_url() および parse_str() 関数の使用法
  2. PHP で $_GET 変数を使用して URL 文字列からパラメーターを取得する
PHP で URL の文字列からパラメータを取得する方法

この記事では、PHP で URL string からパラメータを取得する方法を紹介します。

  • 関数 parse_url() を使用する
  • 関数 parse_str() を使用する
  • 変数 $_GET を使用する

PHP で URL 文字列からパラメータを取得するための parse_url() および parse_str() 関数の使用法

URL string からパラメータを取得するには、組み込み関数 parse_url()parse_str() を利用します。これらの関数はパラメータを取得するために併用します。関数 parse_url は URL をパラメータに分割します。その後、parse_string は必要なパラメータを取得します。

関数 parse_url() の正しい構文は以下の通りです。

parse_url( $url, $component);

組み込み関数 parse_url は 2つのパラメータを持ちます。パラメータの詳細は以下の通りです。

パラメータ 説明
$url 必須 パラメータを取得したい URL です。
$component オプション 特定の URL のコンポーネントを取得するために使用します。

この関数は URL のコンポーネントを返します。URL が正しくフォーマットされていない場合、この関数は False を返すことがあります。

関数 parse_str() を使用する正しい構文は以下の通りです。

parse_str( $string, $result);

組み込み関数 parse_str は 2つのパラメータを持ちます。パラメータの詳細は以下の通りです。

パラメータ 説明
$string 必須 変数に変換されるのは入力 string です。
$result 必須 このパラメータが渡された場合、変数はその中に格納されます。

この関数は何も返しません。

以下のプログラムは、これらの関数を使って URL string からパラメータを取得する方法を示しています。

<?php 
$url = "https://testurl.com/test/1234?email=abc@test.com&name=sarah";
$components = parse_url($url);
parse_str($components['query'], $results);
print_r($results); 
?> 

出力:

Array
(
    [email] => abc@test.com
    [name] => sarah
)

さて、メールのパラメータだけを取得したい場合は、プログラムの中で以下の変更を行います。

<?php 
$url = "https://testurl.com/test/1234?email=abc@test.com&name=sarah";
$components = parse_url($url);
parse_str($components['query'], $results);
echo($results['email']); 
?> 

出力:

abc@test.com

パラメータ $componentparse_url() 関数に渡すこともできます。

<?php 
$url = "https://testurl.com/test/1234?email=abc@test.com&name=sarah";
$components = parse_url($url, PHP_URL_QUERY);
//$component parameter is PHP_URL_QUERY
parse_str($components, $results);
print_r($results); 
?> 

出力:

Array
(
    [email] => abc@test.com
    [name] => sarah
)

PHP で $_GET 変数を使用して URL 文字列からパラメーターを取得する

PHP では、$_GET 変数を使って URL の文字列からパラメータを取得することもできます。これは superglobal 変数であり、すべてのスコープで利用できることを意味します。この変数は、HTML フォームから URL というデータを取得します。

フォームからの URL が _COPY10@test.com&name=sarah であると仮定します。この変数を使って URL string からパラメータを取得するプログラムは以下のようになります。

<?php 
echo $_GET['email'] . $_GET['name']
?> 

出力:

abc@test.com
sarah

関連記事 - PHP String