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()関数を
第二引数を指定せずに使うと
|
例
例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 エンコードされた文字列をデコードする