Make money!

サイト管理者をやっていると「ランダムに広告を表示したい」というときがあると思います。いろいろ方法がありますが、今回はPHPを使った方法を紹介。

自分なりに「広告を表示するためのリストファイルを1つだけ用意して、そこからいくつかの広告を選んでランダム表示」というのを考えてみました。

よくある方法(直書き)

まずはよくある方法。「PHP ランダム 広告」で検索するとよく見る方法がこれですね。

<?php
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$rndtxt[3] = 'テキスト4';
$rndtxt[4] = 'テキスト5';
$length = count($rndtxt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$rndtxt[$num]");
?>

Project MultiBurst: PHPによるランダム広告(テンプレ化)

判りやすくていいのですが、

  • メンテナンスが困難
  • 複数のページで使いづらい
  • コードが長くなりがち

という点が気になります。

少し工夫した方法(外部ファイルを利用)

外部ファイルを利用すると、少しメンテナンスが楽になります。

<?php
srand((double)microtime()*1000000);
$ad_list1 = file("/home/php/public_html/ad.txt");
$ad_key1 = array_rand($ad_list1, 2);
$ad1 = $ad_list1[$ad_key1[0]];
// 表示
echo $ad1;
?>

レッツPHP!

この方法では

  1. 外部ファイルからデータを読み込む
  2. 行をランダムに並べ替え
  3. 並べ替えた最初の行を書き出す

という方法のようです。

こんなときどうする?

上記の方法でなんの問題もない場合の方が多いと思うのですが、たとえば、広告リストに

  1. まじめな広告1
  2. まじめな広告2
  3. まじめな広告3
  4. あやしい広告1
  5. あやしい広告2
  6. あやしい広告3

という広告表示用のコードを書いて、「トップページでは1~3を表示して、あるページでは4~6を表示、別のあるページでは1~6を表示」といったことはできません。

このように細かく表示を変更したい場合は、複数の広告リストを用意する必要があります。マンドクサイ!!

自分が考えた方法(任意の行を抜き出す)

ということで考え出したのが、こんなスクリプト。

<?php
srand((double)microtime()*1000000);
$ad_list  = file('/path/to/ad-list.txt');
$ad_num  = array(1,2,4);
$rand_key = array_rand($ad_num, 1);
$ad = $ad_list[$rand_key--];
echo $ad;
?>

$ad_numが工夫したポイントです。

  1. $ad_listに広告リスト“ad-list.txt”の内容を代入
  2. $ad_numに「表示したい広告の行数」を代入
  3. $ad_numから「1,2,4」行の中からランダムに行数を抜き出し
  4. 広告($ad)を出力

という感じ。

`$ad_list[$rand_key--]`で`$rand_key`から1を引いているのは、PHPの配列が「0」から始まるのに対して、一般的なエディタの行数が「1」から始まるので、合わせてみました。

上記の例でいうと“ad-list.txt”というファイルを用意して、一行に一つの広告表示用のコードを書いて、上記のPHPスクリプトで読み込んでください。

この記事のタグ(偽)

[タイトルは二進数][「I はぁと PHP」な人の添削を希望]

[2] このページの一番上へ戻る