PHPでリクエストURLに指定した文字列を含むか判定する方法!

URLに指定の文字列が含まれていた場合にのみ、特定の処理を行いたいなどの機会は多くあります。PHPではリクエストされたURLを取得することができます。この記事では取得したリクエストURLに指定した文字列を含むか判定する方法をサンプルコード付きで解説しています。

コンテンツ [表示]

  1. 1PHPでリクエストURLに指定した文字列を含むか判定したい
  2. 2PHPでリクエストURLに指定した文字列を含むか判定する方法
  3. 2.1リクエストURLを取得する
  4. 2.2指定した文字列を含むか判定する

PHPでリクエストURLに指定した文字列を含むか判定したい

PHPではリクエストURLに開発側で指定した文字列を含むか判定したいケースがあります。

なぜリクエストURLに対して指定した文字列を含んでいた場合と含んでいない場合に表示するページを出し分けたい場合や、開発側で意図しないリクエストURLやパラメータが来た場合に別途ハンドリングしたい場合などです。

Photo byPexels

そこで今回はPHPでリクエストURLを取得して、そのURLに指定した文字列を判定する方法を紹介していきます。

PHPでリクエストURLに指定した文字列を含むか判定する方法

それでは早速、PHPでリクエストURLに指定した文字列を含むか判定する方法をサンプルコードを使って解説していきます。

  • リクエストURLを取得する
  • 取得したリクエストURLが指定した文字列を含むか判定する
上記2段階に分けて処理を進めていきます。

リクエストURLを取得する

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

リクエストURLを取得するにはPHPで定義済みのグローバル変数$_SERVERを使います。

$_SERVERにはサーバー情報や実行時の環境情報を保持する連想配列です。

キーとして、REQUEST_URIを指定することでページにアクセスする際に指定されたURI(ドメイン以下のパス)を値として取得することができます。

取得した値をhtmlspecialchars関数でエスケープ処理を行い、文字列としてリクエストURLを取得することができました。

指定した文字列を含むか判定する

$str = "qumeru";

if(strpos($url, $str)){
  echo $str . "はURLに含まれます。";
}else{
  echo $str . "はURLに含まれません。";
}

指定文字列を変数$strに代入します。

その後、strpos関数を使って判定を行います。strpos関数は第一引数で指定した文字列の一部に第二引数で指定した文字列が含まれるかどうかを判定してくれます。

取得したリクエストURLの文字列中に指定文字列が含まれるかどうかを判定したいので、第一引数に$url、第二引数に$strを指定します。

指定した文字列がリクエストURLの文字列中の一部に含まれていた場合は、条件式は真となります。

これで、リクエストURLに指定した文字列を含むか判定することができました。

GeekHive採用サイト

関連記事