统计文章字数和全站总字数

关于统计文章字数这个功能最初我是在简书上看到的,现在在自己博客上我也想应用这个功能,便在网上寻找相关插件,找到一个比较满意的插件如下,并根据自己的需求,做了适当修改。

插件来源 https://blog.ela.moe/archives/255/
GitHub项目地址 https://github.com/elatisy/Typecho_WordsCounter

WordsCounter

Typecho文章字数统计 & 全站字数统计插件
可在设置里调是否统计隐藏/私有文章字数

注意: 文件夹名字必须为WordsCounter才能正常使用

Usage

文章字数统计

在你想要输出的地方加上

<?php $this->charactersNum(); ?>

全站字数统计

在你想要输出的地方加上

<?php WordsCounter_Plugin::allOfCharacters(); ?>

修改

但是该插件并没有区分中文和英文字符,对于程序猿来说,在文章中无意会涉及到大量的代码,将这些代码都按照字数进行统计的话,那么每篇文章的字数是相当大的,所以我查阅了相关资料,对插件进行了相关修改,使其只统计中文的字符数。

将原来的 Plugins.php 文件中的统计单个文章的字数和统计全站字数的代码进行修改如下,其他地方均不变。

单个文章中中文字数

public static function charactersNum($archive) {
    $text = preg_replace("/[^\x{4e00}-\x{9fa5}]/u", "", $archive->text);
    return mb_strlen($text,'UTF-8');
    // return mb_strlen($archive->text,'UTF-8');
}

全站文章中文字数

与上文方法类似,关键就是要在计算长度之前将文章中的中文过滤出来,此处不再赘述。

PHP统计字符长度

echo strlen("你好ABC") . "";
# 输出 9
echo mb_strlen("你好ABC", 'UTF-8') . "";
# 输出 5
echo mb_strwidth("你好ABC") . "";
# 输出 7

strlen 把中文字符算成 3 个字节,mb_strlen 不管中文还是英文,都算 1 个字节,而 mb_strwidth 则把中文算成 2 个字节,所以 mb_strwidth 才是我们想要的:中文 2 个字节,英文 1 个字节。

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风醉雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值