parse_str

文字列を処理し、変数に代入する

説明

void parse_str(string $string, array &$result)

URL 経由で渡されるクエリ文字列と同様に string を処理し、現在のスコープに変数をセットします。 (result が指定された場合は、配列 result にセットします)

パラメータ

string

入力文字列。

result

2 番目の引数 result が指定された場合、 変数は、代わりに配列の要素としてこの変数に保存されます。

警告

この関数を result パラメータを指定せずに使うことは 絶対に おすすめしません し、 PHP 7.2 以降では 推奨されません。 PHP 8.0.0 以降では、result パラメータの指定が 必須 になっています。

戻り値

値を返しません。

変更履歴

バージョン 説明
8.0.0 result は、オプションではなくなりました。
7.2.0 parse_str関数を 第二引数を指定せずに使うと E_DEPRECATED レベルの警告が発生するようになりました。

例1 parse_str の使用法

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";

// 推奨
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

// お勧めできない
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
?>

PHP における変数は、名前にドットやスペースを許容しないので、 そういった値はアンダースコアに変換されます。同じことは、 この関数に result パラメータを指定した 場合の、配列のキーの名前にも当てはまります。

例2 parse_str name mangling

<?php
parse_str("My Value=Something");
echo $My_Value; // Something

parse_str("My Value=Something", $output);
echo $output['My_Value']; // Something
?>

注意

注意:

全ての作成された変数 (第二引数が設定された場合は配列に設定される値) の値は、既に urldecode されています。

注意:

現在の QUERY_STRING を取得するには、変数 $_SERVER['QUERY_STRING'] を使用する事ができます。また、 外部から来る変数 のセクションも読んでください。

参考

  • parse_url
  • pathinfo
  • http_build_query
  • urldecode