イメージ画像等の連番が入ったhtmlを自動生成|php

激寒ですね。雪祭り用の雪供給が始まった北海道からこんにちは、フジカワです。
どうしてこうもドカッとまとめて降っちゃうのでしょうか。雪とリスクは分散させて欲しいと切に願う今日この頃です。

定型の流し込みがダルい

画像が100枚。それぞれにリンク付き。はい、コーディング。
メンドクサイですね。
軽くググッてみたのですが、欲しい機能を全て網羅したフリーソフトやサービスがみあたらなかったのでphpで用意することにしました。
もしかしたら需要があるかもなのでメモしておきます。

今回のサンプル条件

・画像は連番で1~100まで
・画像サイズは横100px縦100px
・画像はリンク付き
・リンク先画像のファイル名は連番+拡張子(001.jpg~100.jpg)
・リンク元画像(サムネイル)のファイル名は連番_s+拡張子(001_s.jpg~100_s.jpg)
というのが基本。

<div>
<a href="img/001.jpg"><img src="img/001_s.jpg" width="100" height="100" /></a>
<a href="img/002.jpg"><img src="img/002_s.jpg" width="100" height="100" /></a>
<a href="img/003jpg"><img src="img/003_s.jpg" width="100" height="100" /></a>
…
<a href="img/100.jpg"><img src="img/100_s.jpg" width="100" height="100" /></a>
</div>

こんな感じでずらーっと書くのがゴール。

コード

<?php
echo "<div>n";
for($i=1;$i<101;$i++){
$i=sprintf("%03d",$i);
echo "n";
}
echo "</div>";
?>

簡単な解説

echo "<div>n";

で、最初のdivを書き出します。最後の一行も一緒。「n」は改行のためのエスケープです。

for($i=1;$i<101;$i++)

これは「初期値は1からはじまり、以降1づつ加算しながら、101以下になるまで処理を繰り返す」という意味です。100まで続けたかったら「<101」としましょう。50までなら「<51」です。うっかり間違いにお気をつけて。

$i=sprintf("%03d",$i);

これは桁をそろえるための関数です。「%03d」というのが「3桁」を表しており、4桁にしたければ「%04d」とし、画像が100枚も無く、2桁でよければ「%02d」としましょう。

echo "n";

後はhtmlソースのテンプレート部分です。「".$i."」の部分に数字が流し込まれながらガシガシ生成されていきます。テンプレートとして共通のソースがあれば、上記に付加しても問題ありません。classとか、idとか、alt付加用のダミー(alt="xxxxxx")とか、必要に応じて付加していきましょう。
ここで一点注意したいのは、html上で「"(ダブルクォーテーション)」として表示させたい部分(src、width、heightなどの後に続く属性値の部分)は、上記例にならって、「"」の前に「」を入れてください。じゃないとエラーが発生しますのでお気をつけて。

あとは、この既述ファイルに適当な名前(generator.php等)を付けてサーバーにアップ、ブラウザで閲覧するだけ。ソースを表示してコピーしましょう。

あとはご自由に

あとはご自分が希望されるソースの形に沿うように上記ソースをご自由にいじってください。上手く使えれば眠りを誘発するルーティンワークから少しだけ開放されるかもしれません。
少しでも助けになれば幸いです。

あ、「他にもっと簡単なやり方あるよ」って方、連絡お待ちしております。

コメントを残してみる

コメント