自作の一言API
はじめに
多くのWebサイトでは、ページに「一言」を追加したいと考えていますが、通常は第三者のAPIを呼び出しています。実は、万能なPHPを使えば、わずか数行のコードでこの機能を実現できます。
準備
まずコードエディタを用意し、新しいPHPファイルを作成して api.php と名付け、さらに新しいファイルを作成して data.dat と名付けます(両方のファイルはUTF-8エンコーディングにする必要があります。そうしないと文字化けします)。
data.dat を開き、ランダムに表示したいテキストを 1行につき1つ 貼り付けます。もし良い文章が思いつかない場合は、こちらで数十件のNetEase Cloud Musicのホットなコメントを用意しました。クリックしてダウンロードしてご利用いただけます。
コード
以下のコードを api.php にコピー&ペーストして保存すれば、あなた専用の「一言」APIの完成です!とても簡単ですよね……
<?php
// データを保存するファイル
$filename = 'data.dat';
// ページのエンコーディングを指定
header('Content-type: text/html; charset=utf-8');
if(!file_exists($filename)) {
die($filename . ' データファイルが存在しません');
}
$data = array();
// ファイルを開く
$fh = fopen($filename, 'r');
// 1行ずつ読み込み、配列に格納
while (!feof($fh)) {
$data[] = fgets($fh);
}
// ファイルを閉じる
fclose($fh);
// ランダムに1行のインデックスを取得
$result = $data[array_rand($data)];
echo $result;
上記のコードは fopen + fgets 関数を使用して実装されています。一部の方はあまり好まず、「効率が低い」と感じるかもしれません。ご安心ください。こちらには filegetcontents 関数を使用したバージョンもあります:
<?php
// データを保存するファイル
$filename = 'data.dat';
// ページのエンコーディングを指定
header('Content-type: text/html; charset=utf-8');
if(!file_exists($filename)) {
die($filename . ' データファイルが存在しません');
}
// データファイル全体を読み込む
$data = file_get_contents($filename);
// 改行文字で分割して配列にする
$data = explode(PHP_EOL, $data);
// ランダムに1行のインデックスを取得
$result = $data[array_rand($data)];
// 余分な改行文字を削除(念のため)
$result = str_replace(array("\r","\n","\r\n"), '', $result);
echo $result;
静的ページでの引用方法
上記のコードは、ページ上で直接ランダムな文章を出力するだけです。「一言」のように静的WebページでこのAPIを引用するには、どうすればよいでしょうか?
とても簡単です。最後の行の echo $result; を次のように置き換えます:
echo 'document.write("'.htmlspecialchars($result).'");';
その後、必要な場所でJSを読み込むように呼び出すだけです。
サンプルコード:
<script src="http://あなたのURL/api.php"></script>