JOURNAL クリエイティブとマーケティングの話

URLに特定の文字列が含まれるか判別する方法

URLに特定の文字列が含まれているか判別して、処理を分岐する方法。

たとえばサイト内に施工事例があったとして、アーカイブページとシングルページのURLが以下のようなものだとします。

  • https://xxxxxx.com/works/(アーカイブページ)
  • https://xxxxxx.com/works/case-01/(シングルページ)

そして「施工事例のページだけレイアウトを変えたいな」というようなとき、方法はいろいろあると思いますが、URLの中に施工事例ページのスラッグ(works)が含まれるか判定してクラスを付与する、みたいな使い方ができます。

特定の文字列が含まれるか判定するstrstr関数

strstr関数は、指定した文字列の中に特定の文字列が含まれるか判定するものです。

これを使って、URLの中に「works」が含まれている場合と含まれていない場合の処理を分岐します。

<?php if( strstr( $_SERVER['REQUEST_URI'], 'works' ) ): ?>
	//URLに「works」が含まれている場合の処理
<?php else: ?>
	//URLに「works」が含まれていない場合の処理
<?php endif; ?>

特定の文字が含まれていない場合を先に書きたい場合は、以下のようになります。

strstr関数の前に「!」をつけるだけです。

<?php if( !strstr( $_SERVER['REQUEST_URI'], 'works' ) ): ?>
	//URLに「works」が含まれていない場合の処理
<?php else: ?>
	//URLに「works」が含まれている場合の処理
<?php endif; ?>

URLに特定の文字が含まれている場合のみ表示したい場合

URLに特定の文字が含まれている場合のみ表示して、含まれていない場合は表示しないというときは、以下のような書き方もできます。

<?php if( strstr( $_SERVER['REQUEST_URI'], 'works' ) ): ?>
	//URLに「works」が含まれている場合のみ表示したい内容
<?php endif; ?>

逆ならこうなります。

<?php if( !strstr( $_SERVER['REQUEST_URI'], 'works' ) ): ?>
	//URLに「works」が含まれていない場合のみ表示したい内容
<?php endif; ?>