あると便利。
やりたいこと
現在のURLについてるパラメータを取得して編集する。
$_GET[]だと指定したkeyしか拾えないからよくない、他にもkeyがあったら全部拾ってくる。
全部取ってきて一部を編集する、みたいなことをしたい。
想定としては絞り込み検索とかで使いたい。
参考元
これがあれば解決する。
【PHP】URLパラメータを追加・削除・上書きする関数 | dgcolor
URLパラメータを簡単に追加・削除・上書きするためのPHP関数を紹介します。
使い方例
これでアクセスしたとして
https://example.com/?&page=3&test1=aaaaa&test2=eeeee
中身をこんな感じにしたとして
<?php
function url_param_change($par=Array(),$op=0){
$url = parse_url($_SERVER["REQUEST_URI"]);
if(isset($url["query"])) parse_str($url["query"],$query);
else $query = Array();
foreach($par as $key => $value){
if($key && is_null($value)) unset($query[$key]);
else $query[$key] = $value;
}
$query = str_replace("=&", "&", http_build_query($query));
$query = preg_replace("/=$/", "", $query);
return $query ? (!$op ? "?" : "").htmlspecialchars($query, ENT_QUOTES) : "";
}
$page = $_GET['page'];
print url_param_change(Array("page"=> intval($page) - 1));
出力はこうなる。
?&page=2&test1=aaaaa&test2=eeeee
書き出されるのはパラメータ部分だけなので注意が必要。
絶対パスに補完する癖を付けるのが無難ですね。
print 'https://example.com/'.url_param_change(Array("page"=> intval($page) - 1));
その他の取得方法
取得したパラメータをどう料理するかなんですよ。
URLを改造してまたURLで出したいなら前項。
値を拾ってプログラムを書きたいならこちらの内容になってくる。
ほしいパラメータのkeyが決まってるなら基本に忠実に$_GET[]でいい。
$page = $_GET['page'];
if(isset($page)){
//パラメータがある場合
}
いちいち一個ずつGETするのが嫌な場合もある。
だったらパラメータを配列に格納しちゃう手がある。
連想配列になってるから、あとはkeyを指定して値を取ればいい。
PHPでクエリパラメータを配列として取得する2つの方法 | PisukeCode - Web開発まとめ
そんな感じで。
コメント