この記事は、最後の更新から2441日を超えています。
2018.2.7 / 2018.2.9 update
同一ページで言語の切り替えを行ったり、前のページの情報を渡したりする場合に、URLパラメータを使う場合があります。
※URLパラメータ・・・例えば「http://example.com?page=10」の「?page=10」の部分です。
これを毎回現在のページのパラメータをチェックして書き換え・追加・削除するのは面倒です。
なので僕は大体php用に作った関数を使って処理しています。
下記関数をコピペして使ってください。
<?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) : "";
}
?>
主な使い方は以下のとおりです。
第1引数は、パラメータ名と内容の連想配列で渡します。
内容にnullを入れると、そのパラメータを削除できます。
返り値は、URLの?以下の部分の文字列です(?page=10 など)
第2引数は省略できます。第2引数に1を指定した場合は、返り値の先頭の?を返しません。
<?php
// 追加または上書き
$url_param = url_param_change(Array("パラメータ名"=>"追加または上書きする内容"));
// 削除
$url_param = url_param_change(Array("削除するパラメータ名"=>null));
// 第2引数を指定
$url_param = url_param_change(Array("パラメータ名"=>"内容"),1);
?>
実際にURLを使った場合の取得例は以下のとおりです。
<?php
/*****************************************************************
以下「http://example.com/?param1=100¶m2=200」にアクセスしたと過程
*/
// 追加・上書き
// パラメータが存在していれば上書きされる。存在していなければ追加される
// 返り値:?param1=hoge¶m2=200¶m3=999
$url_param = url_param_change(Array("param1"=>"hoge","param3"=>"999"));
// 削除
// 返り値:?param2=200
$url_param = url_param_change(Array("param1"=>null));
// 先頭の?を消す
// 第2引数に1を指定することで、先頭の?を消すことができる
// 返り値:param1=hoge¶m2=200
$url_param = url_param_change(Array("param1"=>"hoge"),1);
?>
実際に使う場合は、取得したパラメータの文字列をURLの最後につけるなどしてください。
<?php $url_param = url_param_change(Array("lang"=>"jp")); ?>
<a href="http://example.com/<?php echo $url_param; ?>">日本語ページに移動する</a>
関連記事
©dgcolor.info