很多網站都喜歡在頁面中加個一言,不過一般都是調用的第三方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); // 隨機獲取一行索引 $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); // 隨機獲取一行索引 $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 的方式進行調用即可。
示例代碼:
HTML
-
<script src="http://你的網址.cn/api.php"></script>
下面的這個“隨機古詩名句”就是按照上述方法進行的調用:
皮之不存,毛將焉附。——《左傳》
(↑↑↑ 刷新一下頁面,會有不同的句子)
本文作者為mengkun,轉載請注明。