PHPプログラミング

【コピペでOK!】URLパラメータを配列や文字列にして簡単に操作する方法を解説【PHP】

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を使用してクエリ文字列を生成できます。

これで完成です!