HITOKOTO,一个广泛用于各式各样博客的简易API,可以说俨然成为了一些博客的点睛之笔。淡雅的页面风格,配上一段悠扬的音乐,最后再在网页的角落随机附上一段优美的文字,这样的页面设计无不让人拍手称快。当然,一言的API也有自己的问题,由于日渐增长的语库,随机到的一些语录和自己的页面意境显然不搭,这就很难给读者留下好的印象。那么,是否有方法给自己做一个专属一言呢?当然有。这里给出我的一个一言成品——崔氏一言。(尝试一下按F5会出现哪些语句吧!),网站升级了,成品死了!
下面的详细解说也会以崔氏语录作为样例。(感觉,怪怪的。)
首先,想要建一个HITOKOTO,自然就需要足够多的语库,无论是古诗也好,二次元语录也罢,至少也需要两个,不然根本没有随机的必要,不是吗?比如我的崔氏语录,就是以我们高中班主任的口头禅等之类的组成的语库,这个语库可以说凝聚着整个班级的记忆,因而具有很重要的意义。(不过就是一群人玩烂梗罢了)如果只是几句,那么完全可以按照百度一些的教程存储在txt文本当中。但是这只是名句最简单的形式,如果数量庞大,亦或者名句还有相关的出处,那么txt可能不是一个好的选择。这里我们选择MySQL数据来处理这么多的语句。

我们可以写一段PHP代码,将自己的一言数据库所有内容都输出到页面中,代码如下,样例可以在这里查看。
<?php
include("数据库.php");
$dbname="Class20";
//数据库名
$mysqli=new Mysqli($servername,$username,$password,$dbname);
//数据库链接的一些参数,这些变量应该包含在数据库.php中以提高安全性
$mysqli->query("set names utf8");
$table="崔氏语录";
//选择数据库中的表
if($mysqli->connect_error)
{
die("连接失败".$mysqli->connect_error);
}
echo "<table>";
echo "<tr>";
echo "<th>序号</th><th>内容</th>";
echo "</tr>";
//这段表格设置按照数据库的具体形式来实现
getele();
function getele()
{
global $table;
global $mysqli;
$sql="select * from $table";
//从表中选取任意的记录字段
$res=$mysqli->query($sql);
while($row=$res->fetch_row())
//只要没有将遍历完就继续
{
echo "<tr>";
foreach($row as $key=>$val)
{
echo "<td><b>$val</b></td>";
}
echo "</tr>";
}
//表格每行的形式
echo "</table>";
$res->free();
}
?>
有了以上的知识,那么一言的形式就很简单。我们的目标就是从数据库的表中随机抽取一条记录充当一言罢了,这里给出代码如下。
<?php
$output="";
include("数据库.php");
$dbname="Class20";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if(!$conn )
{
die('连接失败: ' . mysqli_error($conn));
}
mysqli_query($conn , "set names utf8");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$table="崔氏语录";
$sql="SELECT 语句 FROM $table AS t1 JOIN (SELECT ROUND(RAND()*(SELECT MAX(序号) FROM 崔氏语录)) AS id) AS t2 WHERE t1.序号>=t2.id ORDER BY t1.序号 LIMIT 1;";
//这段SQL语句就是从表中随机选取一条记录
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
$output=$row["语句"];
//将记录中的语句赋值给output变量
}
}
mysqli_close($conn);
?>
那么之后显示的页面代码应该如下
<?php
include("上面的代码.php");
//将上面的PHP包含到显示页面中,当然也可以选择将两块合在一起,但是为了作为其他项目的接口,建议还是分开代码
echo "<p>$output</p>";
//输出
?>
之后再对输出的格式进行调整、美化,最后就会变成一个美观的HITOKOTO界面,当然,还可以把这个作为一个接口应用到其他地方,至于具体应用的场所就因人而异了。
实验性个人一言(ひとこと/HITOKOTO)制作
https://Mundnaity.moe/post/Make-Your-Own-Hitokoto