3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP条件分岐と文字列検索を使ってHTMLを出し分けする

Last updated at Posted at 2016-10-04

やりたいこと

PHPでサイトを作っていて、ヘッダーやフッターなどの共通パーツは外部化してインクルードしている。
ページによって、その共通パーツの中身をちょこっと変えたいときがある。

例えば、
ヘッダーに設置したお問合せボタンのリンク先をAのページではあっち、Bのページではそっちにリンク張りたい。でもA用とB用のヘッダーファイルを作るのは面倒だから1ファイルで済ましたい。みたいな感じ。

ガッツリ変えるならファイル分けたほうがいいかもしれないけど、ちょこっとだけのとき用。

※コメントいただき、タイトルと本文を編集しました。

①リンクの出し分け

http://自分のサイト.com/a/ 以下にアクセスした際は、Yahooにリンクをはる。
http://自分のサイト.com/abc/ 以下にアクセスした際は、Googleにリンクをはる。

ヘッダー.php
<?php 
$path = $_SERVER['SCRIPT_NAME'];
 //ファイルのパスを取得 (例) /a/index.php

if (strpos($path, '/a/') !== false) {
 //strpos($path, '★ここに検索する文字列を書く★')
 $url = 'http://www.yahoo.co.jp/';
 //処理を書く
}
elseif (strpos($path, '/abc/') !== false) {
 $url = 'https://www.google.co.jp/';
}

<header>
 <a href="<?php echo $url; ?>">おすすめのサイト</a>
</header>

上記では実現できないような検索をしたいときは、正規表現を使う。

ヘッダー(正規表現).php
<?php 
$path = $_SERVER['SCRIPT_NAME'];

if (preg_match('|★正規表現1★|', $path)) {
 $url = 'http://www.yahoo.co.jp/';
 //処理を書く
}
elseif (preg_match('|★正規表現2★|', $path)) {
 $url = 'https://www.google.co.jp/';
}

<header>
 <a href="<?php echo $url; ?>">おすすめのサイト</a>
</header>
?>

②複数行HTMLの出し分け

ヒアドキュメントを使うと便利。

ヘッダー.php
<header>
<div class="bunsyou">
<?php
$path = $_SERVER['SCRIPT_NAME'];

if (strpos($path, '/a/') !== false): ?>
「http://自分のサイト.com/a/ 」<br>
以下にアクセスした際は、<br>
この文章が<br>
表示される。<br>

<?php elseif (strpos($path, '/abc/') !== false): ?>
「http://自分のサイト.com/abc/」<br>
以下にアクセスした際は、<br>
略

<?php endif; ?>
</div>
</header>
ヘッダー(正規表現).php
<header>
<div class="bunsyou">
<?php
$path = $_SERVER['SCRIPT_NAME'];

if (preg_match('|/a/|', $path)): ?>
「http://自分のサイト.com/a/ 」<br>
以下にアクセスした際は、<br>
この文章が<br>
表示される。<br>

<?php elseif (preg_match('|/abc/|' $path)): ?>
「http://自分のサイト.com/abc/」<br>
以下にアクセスした際は、<br>
略
<?php endif; ?>
</div>
</header>

おまけ

昔こういうのも書いた。
ユーザーエージェントを取得して、端末によってHTMLを変更する

コピペ用
<?php 
$path = $_SERVER['SCRIPT_NAME'];
if(strpos($path, '') !== false){
$url = '';
}elseif(strpos($path, '') !== false){
$url = '';
}elseif(strpos($path, '') !== false){
$url = '';
}elseif(strpos($path, '') !== false){
$url = '';
}
?>

<?php 
$path = $_SERVER['SCRIPT_NAME'];
if(preg_match('||', $path)){
$url = '';
}elseif(preg_match('||', $path)){
$url = '';
}elseif(preg_match('||', $path)){
$url = '';
}elseif(preg_match('||', $path)){
$url = '';
}
?>

<?php echo $url; ?>
3
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?