投稿日:2022/06/19 最終更新日:2022/06/19
特定文字列がURLにある場合の処理の書き方
PHPのif構文を使った処理は頻繁に書きますよね。
ただ、URLにこの文字がある場合はこうしたいなと思ったことはないでしょうか?
ページ数が膨大になったサイトではカテゴリーなどがURLに共通のテキストで含まれている場合は上記の方法を使用出来れば処理しやすいですよね。
今回は簡単にできるURLのテキストを使ったif構文の分岐方法を紹介します。
書き方
・特定文字列がURLにある場合
// 書き方
<?php if(strstr($_SERVER['REQUEST_URI'], '文字列')): ?>
// 文字列がURLに含まれている場合の処理
<?php endif; ?>
・特定文字列がURLにない場合
// 書き方
<?php if(!(strstr($_SERVER['REQUEST_URI'], '文字列'))): ?>
// 文字列がURLに含まれている場合の処理
<?php endif; ?>
・複数の特定文字列がURLにない場合
// 書き方
<?php if(!(strstr($_SERVER['REQUEST_URI'], '文字列A') || strstr($_SERVER['REQUEST_URI'], '文字列B'))): ?>
// 文字列Aもしくは文字列BがURLに含まれている場合の処理
<?php endif; ?>
処理の流れ
今回はstrstr関数と$_SERVER変数を理解出来れば大丈夫です。
strstr関数は、strstr(第1引数, 第2引数)となっており「第1引数の文字列の中に第2引数の文字列が含まれているか」を確認する関数です。
もし、含まれている場合はtrueを返し、含まれていない場合はfalseを返します。
$_SERVER変数は「この変数が書かれているファイルのあるサーバーのヘッダ情報を配列で取得する」変数です。
配列で取得するということは複数のヘッダ情報を取得することが出来、今回はURLを取得したいので$_SERVER[‘REQUEST_URI’]とすることでURLを文字列で取得することが出来ます。
つまり、strstr($_SERVER[‘REQUEST_URI’], ‘aaa’)とした場合、、、
① $_SERVER[‘REQUEST_URI’]でURLを文字列で取得する
→ 仮に’https://sample.com/aaa’を取得したとします
② strstr関数で$_SERVER[‘REQUEST_URI’]に’aaa’があるか確認します
→ ‘https://sample.com/aaa’に’aaa’はあるかということ
③この場合aaaはあるのでtrueを返すのでif構文のtrueが実行されます
という感じです。