WordPress 日志摘要截断的补充说明
一年前(好久远了……),我介绍过 WordPress 3种日志摘要方法,其中强烈推荐了第三种方法,也就是这一年多来我一直在用的方法,mb_strimwidth() 函数,对于中文用户来说,这个函数是相当实用的,因为很多摘要的方法都会把中文字截断出乱码,因为中文字在 UTF-8 编码下占三个长度,是一个很尴尬的数字。我记得大叔 ZWW 也介绍过这个 mb_strimwidth() 函数。8过,并不是所有主机都默认支持这个函数的,前提是要开启 mb_string 这个模块。那如果主机没有开启 mb_string 就不能使用 mb_strimwidth() 函数了吗?有没有变通的办法呢?答案当然是 YES,于是也就有了本文。
先在 WordPress 主题的 functions.php 文件中添加如下代码:
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
$output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
return $output.$trimmarker;
}
$output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
return $output.$trimmarker;
}
接下来在需要的地方调用如下:
<?php echo dm_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[阅读全文]</a>');?>
这招是从 domety 那里学来的,看到了没,又是我们伟大而又无敌的正则表达示,我现在对正则是佩服地五体投地,仰慕之情犹如滔滔江水连绵不绝啊。用过 mb_strimwidth() 函数的朋友已经发现了,这个新建的函数和 mb_strimwidth() 的用法是一模一样的,如果你的主机不支持 mb_string 扩展库,那可以试试本文的方法哟。
-
自定义 Wordpress more 标签显示位置2011年04月7日 -
Wordpress 中 N合一的日志摘要方法2010年05月16日 -
Wordpress More 标签从起始位置显示2010年05月14日 -
Wordpress 3种日志摘要方法2009年08月22日
[阅读全文]这一段文字乱码了,要改成英文才能正常显示,求解!
这是你所在文件的编码问题
Pingback: WordPress-不用插件输出首页摘要 - 零·界点
这个方法很不错啊``````
这个方法很好用,搬走了。
很有价值!
好方法阿
mb_strimwidth函数还能用吗,我在一个新模板里试了一下,好像没有反映
是mbstring
我是用插件,呵呵。不折腾了。
逛逛就走了···休息两天又得上课
这里人气好旺啊。
学习了 很受用 谢谢!
受用了,万分感谢!
这个可以有。
一般用插件截断,学习没坏处
抢个位置坐着看看
谢谢分享!很实用的方法..
嘿嘿,我用的是第一个截断方式
我都是写一些重要的。。不是全文
看看我是几层。。。 达达越来越牛啦, WP又出一位牛人咯
路过,来你这里瞧瞧看。。
我低头路过……
看不懂。技术含量太高了。
代码
晕啊|!
我看过很多WORDPRESS的博主的文章,这片写的挺好的
围观下
来学习了。对于代码不懂,只能以后有时间再研究了。
好文章不顶不行的
不错,学习了。
手动的飘过~~~
自动多好呀,手动累哇
这个与mb_strimwidth() 在字符数上面的截取有差别??我在本地发了网站同一篇文章,大家都截取290个字符,结果本地采用你全银河通用的方法..截取多了很多耶..
恩,有差别mb_是按长度截取的,那个不是
这个是按照什么来截取的??我减到了180,结果字数还是差不多..
这个是否万能代码?嘿嘿。发现原来自己的主题是使用mb_strimwidth() 这个函数滴。如果是万能代码,什么主机都能用,我把这个替换上去,嘿嘿嘿
只要支持扩展库的,都可以
支持任何一个扩展库就行??
一定要mb_string
我说你介绍的这个方法呢..呵呵
这个方法全银河系通用
那就好。本地测试之后赶紧换上..嘿嘿。(开来我也是一个追求完美的人啊
)
more 也不错 只是每次都要添加就很不爽了~ 还是自动截取比较好~!
恩,我一般都习惯自动的,嘿嘿
有点糊涂了,这个是显示在搜索引擎下的截断还是在文中more截断。感觉好像是后者。今天好晕
是前者,跟more标签没关系的。不过有个别主机不支持这个PHP函数的。
好文章~激动
我用的是乱七八糟自己写的函数。。。拿去整理一下,看看能过滤“&”吗
正则我是无望,看了就晕
不要晕,其实一点也不难,看两眼就会啦
好东西啊
正则很晕的说
我爱正则,正则爱我,哈哈
咦 主机问题也不会少这么多人吧
少了一大半,杯具
正则是个好东西
恩,不过这个正则写的太复杂了,我看不懂。。。
用插件的路过
放弃插件吧,这个真不需要插件
哈哈
我都是手动加MORE标签截断的。
如果以后要导出转到其他blog平台,那不是很不方便?
现在都是手动输入摘要~~~
有毅力的孩子
我貌似在用zww大叔给的方法。
也是我正在用的方法,嘿嘿
“好久以前”我是知道的。
恩,我多久以前你都知道
看到MB就想到骂人的话。。。
。。。你的想象力丰富了
前排坐坐。期待我的广告上线 呵呵
呵呵,还有三天,图片做好了吗?
呵呵,我没管哦,交个李硕啦。。。
正则感觉少用为好哦……
我是被正则吸引住了,只看到它的好
已经把more用习惯了,成毛病了对于长文不手动more一下就觉得好像少了什么。
以前觉得好麻烦,现在渐渐也习惯了……
再来一个more.
。。。我要引领大家放弃more
来看看
你怎么也叫他大叔了
他本来就是大叔啊,我一直这么吼他
主题自带,没折腾过。在dedecms里面用过类似的函数。
dedecms,这个我还没玩过,有机会要接触一下
中文的正则需要16进制呢!!
还好,我是用more的
。。。用more的小盆友很多嘛
反正我的技术显然还不够用别的……
终于又看到你的链接了
上次是手机访问,懒得改信息了,所以~
我是在willin的A9主题里面看到这个函数,具体出自哪里就不知道了
这个我都用了一年了,哈哈
a9很值得研究呀,我也学了几招
更牛逼的方法,用mb_string库
没有mb_string库怎么用?
cpanel面板可以自己装,所以买虚拟主机要买cpanel面板的
那如果是nginx呢
摘要什么的表示很麻烦
一直用的more标签
每次手动,好累的哇
用的windows live writer,只要点一下就行了。
看来万哥这里确实冷清多了,我居然也能做沙发啊。。。我也是用的你介绍的第三种方法。
今时不同往日咯
这个。。。沙发???
恩,毫无悬念的沙发