很多网站都喜欢在页面中加个一言,不过一般都是调用的第三方api。其实,使用万能的php能通过短短的几行代码就实现该功能![wb_dog13]
准备工作
首先准备一个代码编辑器,然后新建一个 php 文件,命名为 api.php,再新建一个文件,命名为 data.dat(两个文件均需采用 UTF-8 编码,否则会乱码)。
打开 data.dat,在里面贴入要随机显示出来的文本,一行一条。如果你暂时想不出什么比较好的句子的话,[wb_害羞]我这儿准备了几十条古诗名句,可以直接点我下载备用。
上代码
将下列代码复制并粘贴到 api.php 中保存,你的专属“一言” API 就搭建完成了!超简单是不是……[wb_dog9]戳我查看效果演示
<?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
函数实现的版本:[wb_爱你]
<?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 的方式进行调用即可。
示例代码:
<script src="http://你的网址.cn/api.php"></script>
下面的这个“随机古诗名句”就是按照上述方法进行的调用:
三军可夺帅也,匹夫不可夺志也。——《论语·子罕》
(↑↑↑ 刷新一下页面,会有不同的句子)
本文作者为mengkun,转载请注明。
我怎么静态引用,不能正常显示,好像只能调用最后一行,其他都是空白
@hello发现没显示的,都是 document.write("3 ") 的右括号换行了。。。最后一样没换行就可以显示
前辈,有人抄你的这篇文章,一模一样,标明自己是作者。https://www.n-1.cn/112.html
@moyi[aru_59][aru_59][aru_59]
如何添加友盟的数据统计,老哥
大佬,下载诗句文件被防火墙拦截了。
@轩沫已处理
请问 大佬 怎么在emlog侧栏引用这个代码
请问一下怎么嵌入html代码 需要在<hend>标签里面的(百度统计)
大佬,你php好像忘了写结尾的
[斜眼笑]
@夏诗意php 文件后面如果没有了其它内容,可以不用写结尾
@夏诗意结尾去掉?> 更安全,php官方推荐的用法,手册地址http://cn2.php.net/manual/zh/language.basic-syntax.phptags.php
[…] 发现好文:PHP简单实现一言/随机一句功能,文章来源孟坤博客 […]
有转载了一篇文章[aru_13]
真羡慕您的浏览量
请问,博主,能否把这个源码发给我吗,谢谢A Dark Room
@ソ穹ヲA Dark Room的源码是github开源的。。。
不错,mark后期用上
感谢大佬的源码,新手拿去用了
怎么网站有时候打不开呢[aru_6]
这个有用 谢谢[aru_1]
码一个,看起来很实用[aru_53]
不错哦,这个很有用[aru_22]
哈哈 这么晚了来看看你[aru_59]
@cn欢迎欢迎,有失远迎[aru_12]
最近访问,比之前快多了,就是CDN的锅吧
求助一下孟坤大佬,我的网站被反代理了怎么解决[aru_15]
@1648974181https://www.ilxtx.com/mirrored-website.html
水水更健康啊
所有人都看出来你是在水博客了[aru_145]
孟坤大佬你真牛逼,收下我的膝盖。[aru_15]
我就喜欢这么水的帖,因为都是现成的
孟老大,最近我换了阿里云服务器, 换过来以后 sendmail 邮件好像出了一些问题,什么时候有时间,跟你请教一下啊!
@疆飞可以试试用 SMTP 发送。如果 SMTP 也发不成,那就检查一下:
1、邮件账号密码等是否设置正确(或压根就没有配置);
2、服务器对应的端口没有打开;
如果上面两项检查了没问题,就只能发工单求助客服了
@mengkunsmtp 母问题!但是我想用sendmail 来发邮件。
这么久没更新了,这么水啊![aru_1] 不过,我喜欢。[aru_59]
@杰新博客最近一直在憋大招中……只能先水水了
@mengkun说的我更期待了。[aru_50]
好水的文章
竟然能在文章中执行js
@燎原当然可以~[aru_22]
支持博主。[aru_17]那就给大家分享一个百度文库的免费下载方法吧
下载网址 http://139.224.236.108
卡号:906675024密码:531020
卡号:921485865密码:393065
卡号:292030164密码:216849
卡号:482925242密码:940990
@Armin这个不错。我来补充几个……
http://www.1234866.com/
http://www.ywppt.com/run/index/
http://www.v977.com/
沙发,网站卡到爆啊。[aru_27]
@Jack Cui服务器最近出故障了,还没有解决……
@mengkun还是阿里云好[aru_14]
@孟坤粉丝现在这个是几十块钱一年的特价服务器,要啥自行车……
@mengkun阿里云双11比腾讯云便宜呀,99一年