はじめに
Webページを動的に変化させるために、URLのクエリパラメータを使ってページの表示内容を切り替えることがよくあります。例えば、URLの末尾に?t=work
や?t=podcast
といったパラメータを追加し、これに応じて異なる内容を表示する場合です。
本記事では、PHPを使ってURLのパラメータに基づいてページの内容を切り替える簡単な実装方法について説明します。さらに、三項演算子を使用してシンプルかつ効率的な条件分岐を実現する方法も紹介します。
PHPでのURLパラメータ処理の基本
PHPでURLパラメータを取得し、それに応じて処理を行うには、$_SERVER["REQUEST_URI"]
とparse_url()
、parse_str()
を組み合わせて使用します。以下のコードでは、URLのクエリパラメータt
に基づいて、異なるコンテンツを表示する方法を説明します。
$data = $_SERVER["REQUEST_URI"];
list($domain, $dir_01, $dir_02, $dir_03, $dir_04, $dir_05, $dir_06) = explode("/", $data);
$cat_slug = $dir_03;
// URLのクエリ文字列を解析
$query = parse_url($data, PHP_URL_QUERY);
parse_str($query, $params);
// パラメータ 't' が 'work' または 'podcast' に基づいてコードを三項演算子で切り替え
echo isset($params['t']) ?
($params['t'] === 'work' ? "This is the code for 'work'." : ($params['t'] === 'podcast' ? "This is the code for 'podcast'." : "This is the default code."))
: "No parameter provided.";
コードの解説
$_SERVER["REQUEST_URI"]
で現在のURLを取得 このスーパーホーム変数を使って、ブラウザのアドレスバーに表示されているURL全体を取得します。この例では、ページのリクエストURI部分から必要な情報を抽出します。parse_url()
とparse_str()
でパラメータを解析parse_url()
はURLを解析し、特定のコンポーネント(ここではクエリ文字列)を取得するのに役立ちます。次に、parse_str()
を使用してクエリ文字列を配列として解析し、パラメータを扱いやすくします。- 三項演算子で条件分岐 PHPの三項演算子を使って、
t
パラメータの値に基づいて処理を切り替えます。isset()
でパラメータの存在を確認し、work
やpodcast
に応じてそれぞれ異なるメッセージを表示しています。パラメータが存在しない場合や、指定された値がwork
やpodcast
以外の場合にはデフォルトのメッセージが表示されます。
実際の使用例
例えば、以下のようなURLを使った場合の挙動は次の通りです。
example.com/page?t=work
→ “This is the code for ‘work’.” が表示される。example.com/page?t=podcast
→ “This is the code for ‘podcast’.” が表示される。example.com/page?t=other
→ “This is the default code.” が表示される。example.com/page
→ “No parameter provided.” が表示される。
三項演算子を使うメリット
三項演算子は条件分岐を簡潔に記述できるため、コードの可読性を高め、行数も短縮します。特に、簡単な条件分岐を処理する場合には非常に有効です。ただし、ネストが深くなると可読性が低下するため、複雑な条件分岐にはif-else
構文を検討することをお勧めします。
まとめ
URLパラメータを使ってページの表示内容を動的に変更する方法は、ウェブアプリケーションやCMSの柔軟な機能の一つです。三項演算子を用いることで、条件分岐をシンプルに実装することが可能です。今回紹介したコードを参考に、あなたのサイトに適した動的なコンテンツ切り替えを実装してみてください。