PHPでリクエストURLに指定した文字列を含むか判定する方法!
URLに指定の文字列が含まれていた場合にのみ、特定の処理を行いたいなどの機会は多くあります。PHPではリクエストされたURLを取得することができます。この記事では取得したリクエストURLに指定した文字列を含むか判定する方法をサンプルコード付きで解説しています。
PHPでリクエストURLに指定した文字列を含むか判定したい
PHPではリクエストURLに開発側で指定した文字列を含むか判定したいケースがあります。
なぜリクエストURLに対して指定した文字列を含んでいた場合と含んでいない場合に表示するページを出し分けたい場合や、開発側で意図しないリクエストURLやパラメータが来た場合に別途ハンドリングしたい場合などです。
そこで今回はPHPでリクエストURLを取得して、そのURLに指定した文字列を判定する方法を紹介していきます。
PHPでリクエストURLに指定した文字列を含むか判定する方法
それでは早速、PHPでリクエストURLに指定した文字列を含むか判定する方法をサンプルコードを使って解説していきます。
- リクエストURLを取得する
- 取得したリクエストURLが指定した文字列を含むか判定する
リクエスト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に指定した文字列を含むか判定することができました。