想法

首先,很多人都很喜欢“一言”这种东西。随时输出很美的句子,毒鸡汤, 舔狗日记 开个玩笑,别当真 不过呢,我们也想实现一下,直接说思路。

思路

把数据存到data.dat文件(当然重命名也行),一行一条。然后读取文件,随机每行读取,就可以输出了!(空谈没用,我要实现一下)···半小时后···终于写出来了!看代码:

代码

<?php
// 存储数据的文件
$filename = 'data.dat';        
 
// 指定页面编码
header('Content-type: text/html; charset=utf-8');
 
if(!file_exists($filename)) {
    die('数据文件损坏或不存在,请联系管理员');
}
 
$data = array();
 
// 打开文档
$fh = fopen($filename, 'r');
 
// 逐行读取并存入数组中
while (!feof($fh)) {
    $data[] = fgets($fh);
}
 
// 关闭文档
fclose($fh);
 
// 随机获取一行索引
$result = $data[array_rand($data)];
 
echo $result;

就是这样,但是,如果要做成API呢?把最后一行改成:

echo 'document.write("'.htmlspecialchars($result).'");';

命名这个文件为api.php,存至服务器
引入方式:<script src="http://你的网址/api.php"></script>
很简单,对吗?

扩展:另一种写法

网上也有另一种写法,用的是file_get_content,代码如下:

<?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;
Last modification:June 4th, 2020 at 04:18 pm
如果这篇文章帮到了你,就打赏一下吧(只支持QQ)