次のような文字列が mysql テーブルに保存されています。
?name1=value1&name2=value2&name3=value3
元々、このデータは GET データを別のスクリプトに送信するためにのみ使用される予定でしたが、今では他の目的で必要になっています。
これらのペアを変数または配列に変換するための事前定義された関数が PHP にありますか? または手動で行う必要がありますか?
次のような文字列が mysql テーブルに保存されています。
?name1=value1&name2=value2&name3=value3
元々、このデータは GET データを別のスクリプトに送信するためにのみ使用される予定でしたが、今では他の目的で必要になっています。
これらのペアを変数または配列に変換するための事前定義された関数が PHP にありますか? または手動で行う必要がありますか?
(名前の悪い) PHP 関数parse_str
でこれを行うことができますが、最初の疑問符を最初に削除する必要があります。
$arr = array();
parse_str($str, $arr);
print_r($arr);
マニュアルページでほのめかされているこの関数には、いくつかの注意事項があります。
magic_quotes_gpc
設定は、この関数の動作に影響します。これは、クエリ文字列と urlencoded POST 本文をデコードするために PHP によって内部的に使用されるルーチンであるためです。設定の影響を受けない移植可能なソリューションが必要な場合は、値のエンコーディングを処理するためmagic_quotes_gpc
に使用して、デコード関数を手動で記述するのがかなり簡単です。urldecode
function parseQueryString($queryString) {
$result = array();
$pairs = explode("&", $queryString);
foreach ($pairs as $pair) {
$pairArr = split("=", $pair, 2);
$result[urldecode($pairArr[0])] = urldecode($pairArr[1]);
}
return $result;
}
このソリューションはおそらく組み込みparse_args
関数よりも若干遅くなりますが、PHP の構成方法に関係なく動作が一貫しているという利点があります。もちろん?
、最初から を取り除く必要がありますが、これはどちらの例にも含まれていません。
Var_export 役に立つかもしれません。
$arr=?name1=value1&name2=value2&name3=value3
var_export($arr);