前言#
多くのウェブサイトはページに一言を追加するのが好きですが、一般的にはサードパーティの API を呼び出しています。実際、万能の PHP を使えば、わずか数行のコードでこの機能を実現できます。
準備作業#
まず、コードエディタを用意し、新しい PHP ファイルを作成して api.php
と名付け、次に data.dat
という名前のファイルを新しく作成します(両方のファイルは UTF-8 エンコーディングを使用する必要があります。さもなければ文字化けします)。
data.dat
を開き、ランダムに表示したいテキストを貼り付けます。一行一条
。もし良い文が思いつかない場合は、ここに用意した数十の网易云の熱評を直接ダウンロードして引用できます。
コードを書く#
以下のコードをコピーして 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');
// 行ごとに読み取り、配列に格納
while (!feof($fh)) {
$data[] = fgets($fh);
}
// ドキュメントを閉じる
fclose($fh);
// ランダムに1行のインデックスを取得
$result = $data[array_rand($data)];
echo $result;
上記のコードは fopen + fgets 関数を使用して実現されていますが、一部の友人はあまり好きではないようで、「効率が悪い」と感じています。心配しないでください、ここには file_get_contents 関数を使用したバージョンもあります:
<?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;
静的ページでの引用方法
上記のコードは、ページ内でランダムな文を直接出力しています。一言のように静的なウェブページでこの API を引用したい場合、どうすれば実現できるでしょうか?
簡単です。最後の行の echo $result;
を次のように変更します。
echo 'document.write("'.htmlspecialchars($result).'");';
そして、必要な場所で JS をインクルードする方法で呼び出せば OK です。
サンプルコード:
<script src="http://あなたのURL/api.php"></script>
この記事は Mix Space によって xLog に同期更新されました
元のリンクは https://blog.fmcf.cc/posts/technology/Custom_Hitokoto_API