パスを取得
$path = $_SERVER['REQUEST_URI']
PHPが提供するスーパーグローバル変数$_SERVERを利用する。
'REQUEST_URI'に現在アクセスされているパスが格納されている。
因みに「プロトコル(httpsか?) + ホスト名(localhostなど) + パス(/index.phpなど) = 現在のURL」となる。
PHP 8以上ではstr_contains()
を使用
strpos()
をメインで説明していましたが、コメントにて「文字列が含まれるかどうかをチェックするには str_contains()
を使うとよいのではないでしょうか」といただいたのでstr_contains()
の内容を追加しました。ありがとうございます!
条件分岐
if( str_contains( $path, 'hogehoge' ) {
// $pathにhogehogeが含まれる場合
} else{
// $pathにhogehogeが含まれない場合
}
PHP 8で追加された関数str_contains()
を使用すると、特定の文字列が含まれるかどうかの真偽値true/falseが返されるので、上記のように条件分岐できる。
PHP 7系以下ではstrpos()
を使用
条件分岐
if( false === strpos( $path, 'hogehoge' ) {
// $pathにhogehogeが含まれない場合
} else{
// $pathにhogehogeが含まれる場合
}
strpos()
は文字列が見つかった位置を整数で返すので上記で判定できる。
※類似の関数strstr()
は最初に現れる場所を含めてそこから文字列の終わりまでを返す。
※strpos()
の方がメモリ消費が少ないので、PHP 7.4以下では文字列が含まれるかどうかの判定であればstrpos()
を使うのがよい。
strpos()の注意点
検索対象が先頭に見つかる場合はstrpos()
で0が返されるので注意。
if( strpos( 'apple', 'a' ) ) {
// 'a' が 0 番目にあるので、boolean変換で偽になる
}
str_contains()
と同じ感覚で使うとハマる可能性あり。