Php/docs/function.parse-str

提供:Dev Guides
< Php
移動先:案内検索

parse_str

(PHP 4, PHP 5, PHP 7)

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


説明

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

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


パラメータ

string

入力文字列。

result

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

警告

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

関数スコープの変数に動的に値を設定すると、 register_globals と全く同じ問題で苦しむことになります。

なぜこのことが危険なのかを説明するために、 グローバル変数の登録機能の使用法 を読んでください。


返り値

値を返しません。


変更履歴

バージョン 説明
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'];  // valueecho $output['arr'][0]; // foo barecho $output['arr'][1]; // baz// お勧めできないparse_str($str);echo $first;  // valueecho $arr[0]; // foo barecho $arr[1]; // baz?>

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

例2 parse_str() name mangling

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

注意

注意:

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

注意:

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

注意:

magic_quotes_gpc の設定が、この関数の出力に影響を与えます。というのも parse_str() が使用している仕組みは PHP が $_GET$_POST などの設定に使用しているものと同じだからです。

参考

  • parse_url() - URL を解釈し、その構成要素を返す
  • pathinfo() - ファイルパスに関する情報を返す
  • http_build_query() - URL エンコードされたクエリ文字列を生成する
  • urldecode() - URL エンコードされた文字列をデコードする