ChatGPT 帮我写代码,实现“已写完哪本书”统计

Auth:青山       Date:2023/04/17       Cat:玩物志       Word:共2932字       Views:1.9K

我算是第一批用上 ChatGPT 的人群,去年12月就已经注册好了。到目前为止,我用它帮我写过调查问卷、日常作业,也会问一些奇奇怪怪的问题。昨天利用它,帮我写了一段 WordPress 的代码。

起初是在林木木的博客里看到他写《已写完了哪本书》 ,原理我懂,获取全站所有文章的字数,然后看你字数在哪个区间,便输出对应字数的书籍,奈何人家使用的是 Hugo,我便问他如果用在 WordPress 上需要如何修改,他给了我 Typecho 的修改版本,具体看《博客全站总字数统计》。又难倒我了,我随即向 ChatGPT 寻求帮助。

我先将林木木博客的代码发给它,解释了一遍代码原理。

ChatGPT 帮我写代码,实现“已写完哪本书”统计 - 第1张图片

随后,我让它将此代码修改为 WordPress 可用的版本,但是写出来似乎不起作用。我就给它发送 Typecho 的版本进行修改,同样也给我解释了代码的原理。

ChatGPT 帮我写代码,实现“已写完哪本书”统计 - 第2张图片

最后,再要求它基于上述代码,修改为 WordPress 可用的版本,虽然由于字数限制,它无法一次性生成全部代码,但好在成功了。

ChatGPT 帮我写代码,实现“已写完哪本书”统计 - 第3张图片

我将完整代码贴出来,并说明用法。

/*
 * 输出全站字数,并匹配书籍
 * 原作者:林木木
 * 修改者:胡鹤仙&ChatGPT
 */
function allwords() {
    global $wpdb;
    $chars = 0;
    $results = $wpdb->get_results("SELECT post_content FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'post'");
    foreach ($results as $result) { $chars += mb_strlen(trim($result->post_content), 'UTF-8'); }
    if($chars<50000){
    echo '全站共 '.$chars.' 字,还在努力更新中..加油!加油啦!';}
    elseif ($chars<70000 && $chars>50000){
    echo '全站共 '.$chars.' 字,写完一本埃克苏佩里的《小王子》了!';}
    elseif ($chars<90000 && $chars>70000){
    echo '全站共 '.$chars.' 字,写完一本鲁迅的《呐喊》了!';}
    elseif ($chars<100000 && $chars>90000){
    echo '全站共 '.$chars.' 字,写完一本林海音的《城南旧事》了!';}
    elseif ($chars<110000 && $chars>100000){
    echo '全站共 '.$chars.' 字,写完一本马克·吐温的《王子与乞丐》了!';}
    elseif ($chars<120000 && $chars>110000){
    echo '全站共 '.$chars.' 字,写完一本鲁迅的《彷徨》了!';}
    elseif ($chars<130000 && $chars>120000){
    echo '全站共 '.$chars.' 字,写完一本余华的《活着》了!';}
    elseif ($chars<140000 && $chars>130000){
    echo '全站共 '.$chars.' 字,写完一本曹禺的《雷雨》了!';}
    elseif ($chars<150000 && $chars>140000){
    echo '全站共 '.$chars.' 字,写完一本史铁生的《宿命的写作》了!';}
    elseif ($chars<160000 && $chars>150000){
    echo '全站共 '.$chars.' 字,写完一本伯内特的《秘密花园》了!';}
    elseif ($chars<170000 && $chars>160000){
    echo '全站共 '.$chars.' 字,写完一本曹禺的《日出》了!';}
    elseif ($chars<180000 && $chars>170000){
    echo '全站共 '.$chars.' 字,写完一本马克·吐温的《汤姆·索亚历险记》了!';}
    elseif ($chars<190000 && $chars>180000){
    echo '全站共 '.$chars.' 字,写完一本沈从文的《边城》了!';}
    elseif ($chars<200000 && $chars>190000){
    echo '全站共 '.$chars.' 字,写完一本亚米契斯的《爱的教育》了!';}
    elseif ($chars<210000 && $chars>200000){
    echo '全站共 '.$chars.' 字,写完一本巴金的《寒夜》了!';}
    elseif ($chars<220000 && $chars>210000){
    echo '全站共 '.$chars.' 字,写完一本东野圭吾的《解忧杂货店》了!';}
    elseif ($chars<230000 && $chars>220000){
    echo '全站共 '.$chars.' 字,写完一本莫泊桑的《一生》了!';}
    elseif ($chars<250000 && $chars>230000){
    echo '全站共 '.$chars.' 字,写完一本简·奥斯汀的《傲慢与偏见》了!';}
    elseif ($chars<280000 && $chars>250000){
    echo '全站共 '.$chars.' 字,写完一本钱钟书的《围城》了!';}
    elseif ($chars<300000 && $chars>280000){
    echo '全站共 '.$chars.' 字,写完一本张炜的《古船》了!';}
    elseif ($chars<310000 && $chars>300000){
    echo '全站共 '.$chars.' 字,写完一本茅盾的《子夜》了!';}
    elseif ($chars<320000 && $chars>310000){
    echo '全站共 '.$chars.' 字,写完一本阿来的《尘埃落定》了!';}
    elseif ($chars<340000 && $chars>320000){
    echo '全站共 '.$chars.' 字,写完一本艾米莉·勃朗特的《呼啸山庄》了!';}
    elseif ($chars<350000 && $chars>340000){
    echo '全站共 '.$chars.' 字,写完一本雨果的《巴黎圣母院》了!';}
    elseif ($chars<400000 && $chars>350000){
    echo '全站共 '.$chars.' 字,写完一本东野圭吾的《白夜行》了!';}
    elseif ($chars<1000000 && $chars>400000){
    echo '全站共 '.$chars.' 字,写完一本我国的名著了!';}
    elseif ($chars>1000000){
    echo '全站共 '.$chars.' 字,已写一本列夫·托尔斯泰的《战争与和平》了!';}
}

将上述代码添加到主题文件的 function.php 文件中,并在需要调用的地方添加代码。

<?php echo allwords(); ?>

我目前是放在了 footer.php 文件中,显示在页面末尾。上述代码可以根据实际情况自由修改,比如字数、书名等等,也可以添加更多的字数区间和书名。以上便是我用 ChatGPT 的过程。效果如下图所示。

ChatGPT 帮我写代码,实现“已写完哪本书”统计 - 第4张图片

另外,本来想让它继续写一个友情链接页面的模板文件,但试了多次,效果始终不太理想,目前的效果见友情链接页面查看吧,待优化中。

文章作者:

本文链接:https://yinji.org/4901.html

版权声明:本站禁止任何形式的文章转载。

《ChatGPT 帮我写代码,实现“已写完哪本书”统计》留言数:13

  1. 印记-格子老师格子老师LV2

    友情链接 要写成什么样的?要能自动提交,审核通过发送邮件通知,外加你这样的展示页面? 我站点里有一个自己写的单页投诉页面,应该功能修改一下 就可以实现。https://wenku.qian.lu/tousu?action=submit

    8楼 回复
  2. 印记-LecheLeche

    GPT说这个函数使用了 PHP 的 mb_strlen 函数来获取字符的长度,其中 ‘UTF-8’ 是字符编码。因此,这个函数会返回字符的长度,而不是中文字的数量。它考虑了多字节字符编码中的字符长度。
    如果网站主要使用中文字符,并且想要获取中文字的数量,可以修改为:

    function allwords() {
    global $wpdb;
    $chinese_words = 0;
    $results = $wpdb->get_results(“SELECT post_content FROM {$wpdb->posts} WHERE post_status = ‘publish’ AND post_type = ‘post'”);
    foreach ($results as $result) {
    $content = trim($result->post_content);
    // 使用正则表达式匹配中文字符
    preg_match_all(‘/[\x{4e00}-\x{9fa5}]+/u’, $content, $matches);
    foreach ($matches[0] as $match) {
    $chinese_words += mb_strlen($match, ‘UTF-8’);
    }
    }
    return $chinese_words;
    }

    10楼 回复

发表留言