Php icons created by Icon Monk – Flaticon
ペンちゃん
URLパラメータを操作したいな。
どうやったら簡単にパラメータを追加したりできるだろう。
その方法を教えて欲しいな!
この記事では、以上のような悩みを解決する知識を解説します。
結論、配列にすると簡単で分かりやすく操作可能でした。
コード紹介
最初にコードを載せます。
//パラメーター文字列内の?を除去する
$formatQueryString = str_replace('?', '', $query);
//&で分割して配列に格納
$queryArray = explode('&', $formatQueryString);
//新しい配列
$newQueryArray = array();
//&で分割するとキーと値も入ってしまうので、=で分割する
foreach ($queryArray as $queryData) {
//"A=B"をA=>B
として配列を作っていく
$newQueryArray[explode('=', $queryData)[0]] = explode('=', $queryData)[1];
}
//http_build_queryで配列からクエリパラメータ文字列を作成する
$queryString = http_build_query($newQueryArray);
一つづつ解説していきます。
//パラメーター文字列内の?を除去する
$formatQueryString = str_replace('?', '', $query);
“?a=1&b=1”
という文字列から?を削除します。
//&で分割して配列に格納
$queryArray = explode('&', $formatQueryString);
“a=1&b=1”
という文字列を&で区切った配列にします。
//&で分割するとキーと値も入ってしまうので、=で分割する
foreach ($queryArray as $queryData) {
//"A=B"をA=>B
として配列を作っていく
$newQueryArray[explode('=', $queryData)[0]] = explode('=', $queryData)[1];
}
[a=1,b=1]
という配列になったので、それぞれの値を=で区切って
[a=>1,b=>1]
という配列に整形していく。
パラメータの追加や削除を行うときはこの後で操作するといいです。
作成した$newQueryArrayで
//追加
$newQueryArray['x'] = 1
//削除
unset($newQueryArray['a'])
のようにするとメンテナンスしやすい変更が加えられます。
//http_build_queryで配列からクエリパラメータ文字列を作成する
$queryString = http_build_query($newQueryArray);
変更を加えた後は
配列からkey1=value1&key2=value2のような文字列を生成してくれる
http_build_queryを使用してクエリ文字列を生成できます。
これで完成です!