退而求其次的办法是根据字数判断。每个摘要虽然“占地面积”可能不一样,但字数是一样的,也还算整齐。不过中文工具箱的办法有点麻烦,其实有个mb_substr()函数就完全可以达成这一任务,截取指定数量的前若干个汉字,绝不会出现乱码。
不过mb_substr()函数也有个问题,它是根据字符数截取,如果文章里面夹杂了英文,比如wordpress这一个词就是9个字符了,它比九个汉字的占地面积要小的多,那么夹杂英文的摘要就会显得比全汉字的摘要短(这个都考究,我觉得我是有点bt了 -.-)。解决办法是用mb_strcut()函数,它和mb_substr()函数基本一样,只是是根据字节数截断的,在utf-8里,一个汉字大概占三个字节,一个英文字母占一个字节,这样截出来的汉字文本就会短一些,和英文的长短比较一致。同样,mb_strcut()函数也不会出现乱码。
mb_substr()和mb_strcut()函数共同的问题是,它们是按字符截取的,对英文来说就是按字母截取的,因此有可能把一个单词从中间截断……
另一个问题是mb_substr()和mb_strcut()属于mbstring扩展库,有的空间不支持。对于这种空间商,写信去要求他安装吧,付了钱的就得理直气壮提要求。要求无效的,真得考虑一下这种基本要求都不能满足的空间的质量了。
我写了一个插件,基本仿照Yskin的,不过截取用的是mb_strcut()。并为不支持mb_strcut()的空间自定义了一个函数,抄自网上的mb_substr()函数替代脚本,没找到mb_strcut()的替代脚本,汗。此外还有以下特点:
1,输出的摘要保留原来文章的格式。
2,做了一个判断,如果是存档页(分类存档、每月存档等),输出的摘要较短;如果是首页,输出的摘要较长。
3,如果本来的文章长于摘要,那么最后会显示[……],省略号指向全文的链接。去掉了Yskin原来的统计字数,因为我个人不喜欢;当然要加上也很容易。
更新:
Advanced Excerpt 是另一个很好的 WordPress 摘要插件,但需要略加改动才适合中文,对它的介绍和修改方法请看保留 html 标签的 wordpress 摘要插件一文。 总结:
为了完美地实现在 wordpress 博客首页、存档页显示摘要,RSS 输出全文,请根据自己的需求下载上述摘要插件中的一个,或下载我写的摘要插件。开启插件之后,如果发现你的首页仍然是全文,那说明你的主题不支持,请根据上面的第二条办法修改主题文件。









