PHPでは、クエリ文字列をURLから変換する関数が必要です。たとえば、http://example.com?key1=value1&key2=value2
PHP連想配列:array ['key1' => 'value1', 'key2' => 'value2']
。
このコードにたどり着きました。動作しますが、少し時間がかかります。 (そしてPHPにはすべての機能が組み込まれています:http_build_query
。)
これを行うためのより良い方法を提案できますか?
function getUrlParams($url) {
$querystring = parse_url($url, PHP_URL_QUERY);
$a = explode("&", $querystring);
if (!(count($a) == 1 && $a[0] == "")) {
foreach ($a as $key => $value) {
$b = explode("=", $value);
$a[$b[0]] = $b[1];
unset ($a[$key]);
}
return $a;
} else {
return false;
}
}
parse_url() を使用して、URLから属性のみを取得できます
parse_str() を使用して変数に変換できるようになると、多次元配列でも機能します!
$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
あなたが書いたものを意味する場合、それは非常に単純で他に何も必要ありません。定義済みのスーパーグローバル変数$_GET
in PHPそれ自体がすべてのクエリ文字列をキーとして表します、値のペアの連想配列。
例:
// current page URI: http://localhost/test.php?key1=value1&key2=value2
echo '<pre>';
print_r($_GET);
echo '</pre>';
結果:
Array(
[key1] = value1
[key2] = value2
)
$_GET
の詳細については、PHP superglobal goto: http://php.net/manual/en/reserved.variables.get.php
$url = 'http://example.com?key1=value1&key2=value2&key3=value3';
preg_match_all('/\w+=.*/',$url,$matches);
parse_str($matches[0][0], $output);
print_r($output);