PHPでurlを取得してurlに指定した文字列を含むか比較する方法

カテゴリー:PHP

ワードプレスでブログを運用しているとカテゴリーなどがどんどん増えていくことが多いと思います。

雑記ブログだと特に仕様など考えないでどんどん記事を追加していくこと多いですよね。後々、「この投稿だけ」「この子カテゴリーだけ」表示を変更したいなって時が出てきたりすると思います。

そんな時に今回のurlを取得してurlに指定した文字列を含むか比較する方法で、特定のurlのみに何かを適用することができるようになります。

urlを取得

PHPでurlを取得するには$_SERVER[‘REQUEST_URI’]で取得します。その際に念のためサニタイジングもしておきます。変数$urlにurlを代入します。

$url = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, 'UTF-8');

ワードプレスで行う場合はesc_url関数を使用するのが良いと思います。

$url = esc_url($_SERVER['REQUEST_URI']);

これで変数$urlにurlを代入できます。

strposで特定の文字列を含むかチェック

今回は、特定の文字列に特定の単語があるかどうか調べるだけなので、PHPのリファレンスにある通り、strposで特定の文字列を検索します!

strposを使用する際に注意する点は、特定の単語が文字列の最初にある時に返り値が0になるところです。下記が例です。

$url = 'test';

// 返り値が0のため含まれていないと判定される。
if (strpos($url, 'test')) {
    echo '含まれている';
}else{
  echo '含まれていない';
}

// !== falseで比較すると返り値が0でも含まれていると判定される。
if (strpos($url, 'test') !== false) {
    echo '含まれている';
}else{
  echo '含まれていない';
}

urlを取得してurlに指定した文字列を含むか比較

最後にまとめます。

$url = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, 'UTF-8');

if (strpos($url, '含まれているか判断したい文字列を入れる') !== false) {
    echo '含まれている';
}else{
  echo '含まれていない';
}

これで、urlで表示の切り替えなどができるようになります。


タグ

関連する投稿

ドラクエ好きな社会保険労務士有資格者・ファイナンシャルプランナー技能士検定2級正会員が運営をしています。当ブログではDQMSLを中心にWordPress・HTML・CSS・JS・PHPなどのTips備忘記録や資格関連の情報、その他雑記を発信して行きます。