ウェブ開発において、ページURLを取得し、そのURL内に特定の文字列が含まれているかどうかを判定して、表示内容や処理を分岐させたいときはありませんか?例えば、特定のページで異なるスクリプトを読み込んだり、表示するコンテンツを切り替える場合です。このブログでは、PHPを使用してページURLを取得し、指定した文字列が含まれているかどうかを判定して処理を分ける方法について詳しく解説します。
URLの判定が必要なケースとは?
具体的な例として、複数のページに異なるJavaScriptファイルを読み込む場合や、SEO対策として特定のページだけ異なるタイトルを表示する必要がある場面が考えられます。このような場合、ページのURLに基づいて動的に処理を分岐させることが効果的です。ここで紹介するPHPの方法は、簡単なコードでこれを実現できるため、ぜひ参考にしてみてください。
ページURLを取得し、指定文字列を判定するPHPの記述
まずは、現在アクセスしているページのURLを取得するPHPのコードです。このコードは、$_SERVER変数を使って現在のURLを取得し、ブラウザに表示します。
<h2>現在のURLは<br>「<b>
<?php echo (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>
</b>」<br>です</h2>
このコードは、HTTPかHTTPSかを判定し、ホスト名とリクエストURIを結合してURLを取得しています。この方法は、現在のページURLを完全に取得するのに役立ちます。
CSSの記述例
ここは重要では無いので、必要に応じて書き換えてください。
<style type="text/css">
<!--
body{
font-family:Verdana,"Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W6",Osaka,"MS Pゴシック",Arial,sans-serif;
padding: 0;
margin: 0;
}
h1{
font-size:18px;
font-weight:bold;
line-height:1.2em;
padding:15px 0 30px 0;
}
h2{
font-size:16px;
font-weight: normal;
padding-bottom: 40px;
line-height: 1.6em;
}
#idWrap{
width:900px;
margin:0 auto;
text-align: center;
}
.red{
font-size: 16px;
color: #FF0000;
line-height: 1.8em;
}
.bk{
font-size: 16px;
color: #FF0000;
line-height: 1.8em;
}
#idWrap b{
font-size: 22px;
}
-->
</style>
URLに特定の文字列が含まれているかどうかを判定する
次に、URL内に特定の文字列が含まれているかどうかを判定して、表示内容を変えるPHPのサンプルコードです。この例では、?moziretsuという文字列がURLに含まれているかどうかを判定しています。
<?php
if(strstr($_SERVER["REQUEST_URI"], "?moziretsu")):
?>
<div class="red">URLに検索文字列<br>「<b>?moziretsu</b>」<br>は<b>あります</b>。</div>
<br>
<br>
<a href="/demo/php/20210618-strstr-request-uri">検索文字列「?moziretsu」無しの場合>></a>
<?php else: ?>
<div class="bk">URLに文字列<br>「<b>?moziretsu</b>」<br>は<b>ありません</b>。</div>
<br>
<br>
<a href="/demo/php/20210618-strstr-request-uri/?moziretsu">検索文字列「?moziretsu」有りの場合>></a>
<?php endif; ?>
このコードでは、strstr関数を使って、現在のページURLに「?moziretsu」という文字列が含まれているかをチェックしています。含まれている場合には特定のメッセージを表示し、含まれていない場合には異なるメッセージを表示します。この方法は、例えばキャンペーンページやフィルター検索ページなどでよく使われます。
PHP処理の流れ
このPHP処理は、以下のような手順で動作します:
- 現在のページURLを取得します。
- 取得したURLの中から、指定した文字列(この例では「?moziretsu」)が含まれているかどうかをstrstr関数で検索します。
- 含まれている場合と含まれていない場合で、表示する内容を分岐させます。
この手法を使えば、動的なコンテンツの表示や、特定のページごとに異なるスクリプトを読み込むなど、さまざまな応用が可能です。
ページURLを取得し、URLの指定文字列を判定して処理するPHPの表示結果
このコードを利用して、実際にどのように表示されるかを確認することができます。以下は、その結果例です。
検索文字列「?moziretsu」無しの場合>>
検索文字列「?moziretsu」有りの場合>>
このリンクをクリックすることで、?moziretsuがURLに含まれている場合と含まれていない場合の動作を確認できます。これにより、ページごとのコンテンツの切り替えや、動的な処理がどのように行われるかが実感できます。
まとめ
今回紹介した方法を使うことで、簡単にページのURLを取得し、特定の文字列が含まれているかどうかを判定することができます。この手法は、ウェブサイトの階層によって異なるコンテンツを表示したり、動的なスクリプトを読み込んだりする場面で非常に役立ちます。PHPの基本的な構文を使ったシンプルな方法ですが、応用範囲は広く、さまざまなプロジェクトで活用できます。ぜひ、あなたのウェブサイトにも取り入れてみてください。
※流用される場合は自己責任でお願いします。