MoeWah

给博客集成Hitokoto一言经典语句功能
什么是一言相信大家都有或曾经有过自己的摘抄本。「一言」就好似一个公开的摘抄本,我们在此记录那些让人感怀的,让人振奋...
扫描右侧二维码阅读全文
23
2019/01

给博客集成Hitokoto一言经典语句功能

一言API.jpg

什么是一言

相信大家都有或曾经有过自己的摘抄本。「一言」就好似一个公开的摘抄本,我们在此记录那些让人感怀的,让人振奋的,让人感动的,让人一眼就有所感触的短句,并通过公共 API 的形式使你能够在自己的项目中调用它们。

自己用了好一段时间了,觉得还不错。下面简单的介绍下如何部署一个属于自己的一言API 接口。

部署接口

将下面的代码保存为 index.php,然后上传到网站根目录下的 hitokoto 文件夹(这个自己随机定义)最后,从小霖分享的文章 hitokoto.txt 文本文件 。这里也提供一份喵斯基的备份文件:点此下载

<?php
//获取句子文件的绝对路径
//如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过Nginx禁止拉取也行。
$path = dirname(__FILE__);
$file = file($path."/hitokoto.txt");
 
//随机读取一行
$arr  = mt_rand( 0, count( $file ) - 1 );
$content  = trim($file[$arr]);
 
//编码判断,用于输出相应的响应头部编码
if (isset($_GET['charset']) && !empty($_GET['charset'])) {
    $charset = $_GET['charset'];
    if (strcasecmp($charset,"gbk") == 0 ) {
        $content = mb_convert_encoding($content,'gbk', 'utf-8');
    }
} else {
    $charset = 'utf-8';
}
header("Content-Type: text/html; charset=$charset");
 
//格式化判断,输出js或纯文本
if ($_GET['format'] === 'js') {
    echo "function hitokoto(){document.write('" . $content ."');}";
} else {
    echo $content;
}

hitokoto.txt 上传到和 index.php 同级目录,比如 hitokoto 文件夹内。

现在,浏览器访问 http://你的域名/hitokoto/ 就可以看到输出内容了。

调用方法

第一步我们已经完成了这个接口的自建部署,现在可以把这个功能搬到博客上了。将下面两行代码添加到博客你想显示一言的位置即可:

<script type="text/javascript" src="https://你的域名/hitokoto/?format=js&charset=utf-8"></script>
<div class="hitokoto"><script>hitokoto()</script></div>

如果你懒得自己部署接口,这里推荐使用 LWL12 的接口,直接将下面的代码添加到需要显示的位置即可。

<script type="text/javascript" src="https://api.lwl12.com/hitokoto/v1?encode=js&charset=utf-8"></script>
<div class="hitokoto"><script>hitokoto()</script></div>

懂 CSS 的话可以自己再美化美化。也可以直接用我这边写好的 css 代码(可以加到 style.css):

.hitokoto {
    padding: 5px;
    border: 1px dashed #ccc;
}
标签:PHP
最后修改:2019 年 01 月 23 日 02 : 47 PM
给作者续一杯咖啡

发表评论