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]"); ?>
判りやすくていいのですが、
- メンテナンスが困難
- 複数のページで使いづらい
- コードが長くなりがち
という点が気になります。
少し工夫した方法(外部ファイルを利用)
外部ファイルを利用すると、少しメンテナンスが楽になります。
<?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; ?>
この方法では
- 外部ファイルからデータを読み込む
- 行をランダムに並べ替え
- 並べ替えた最初の行を書き出す
という方法のようです。
こんなときどうする?
上記の方法でなんの問題もない場合の方が多いと思うのですが、たとえば、広告リストに
- まじめな広告1
- まじめな広告2
- まじめな広告3
- あやしい広告1
- あやしい広告2
- あやしい広告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
が工夫したポイントです。
$ad_list
に広告リスト“ad-list.txt”の内容を代入$ad_num
に「表示したい広告の行数」を代入$ad_num
から「1,2,4」行の中からランダムに行数を抜き出し- 広告(
$ad
)を出力
という感じ。
`$ad_list[$rand_key–]`で`$rand_key`から1を引いているのは、PHPの配列が「0」から始まるのに対して、一般的なエディタの行数が「1」から始まるので、合わせてみました。
上記の例でいうと“ad-list.txt”というファイルを用意して、一行に一つの広告表示用のコードを書いて、上記のPHPスクリプトで読み込んでください。
この記事のタグ(偽)
[タイトルは二進数][「I はぁと PHP」な人の添削を希望]