在《简单的文章截断方法, 支持 Read more 加上 nofollow》一文中所使用的文章截断是使用mb_strimwidth函数来实现的,其实稍微想想就可以发现很多地方都可以使用这个函数,下面说明一下和举一些例子。
先说说mb_strimwidth函数:
mb_strimwidth是超轻量级的php函数,用来获取指定的宽度截断字符串。
使用方法:
mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encoding ]] )
参数说明:
$str //指定字符串
$start //指定从何处开始截取
$width //截取文字的宽度
$trimmarker //超过$width数字后显示的字符串
例一、限制文章标题文字个数
如我侧边栏的“Random Posts”和“Recent Posts”,因为侧边栏宽度有限,所以对于长文章标题会出现两行,这样有点影响美观,这时就可以用mb_strimwidth函数来限制文字个数在一行内。
文章标题的调用函数一般是这样:
<?php the_title(); ?>
我主题的侧边栏最多大概显示20个中文,所以可以限制在18个文字内,使用mb_strimwidth函数后变成如下:
<?php echo mb_strimwidth(get_the_title(), 0, 36,"..."); ?>
其中 36 代表 18 个双字节文字
例二、最新评论的文字个数
上篇文章《带头像显示的最新评论代码 - 蛋疼篇》里面的最新评论长度是用css的overflow:hidden属性来隐藏评论长度的,从而使每条评论占用一行,其实也可以用mb_strimwidth函数来截取固定的文字数量
最新评论代码中评论内容是:strip_tags($rc_comm->comment_content)
用mb_strimwidth函数限制文字变成:mb_strimwidth(strip_tags($rc_comm->comment_content), 0, 36,"...")
很方便的一个函数,还有其他应用就自己举一反三吧,mb_strimwidth()是php的函数,所以不依赖wp的版本。
- 本文标题:mb_strimwidth函数的简单应用
- 本文链接:https://zww.me/archives/25189
- 发布时间:2010年07月08日 13:33
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
牵手博客网做个调查:
1、你做站是否只在站长圈做推广?
2、你网站上是否挂GG广告或百度联盟?
3、你是否每天都查看网站统计和广告收入后台?
4、你的GG广告点击客户是?
5、你收入是否月入2000以上?
希望各位站长朋友能够接受调查,答复自己的问题!
谢谢!
@牵手博客网 竟然开着ie6来调查……
继续more……
好函数~~~
不懂 友情支持~
点点ad~
@ikeeptrying 回点去
很实用的函数。
你写的怎么都这么有用啊,不敢看了,自卑ing
@mealdy 这……没啥好自卑
标题后面显示...确实很cool
被小图给吸引了
@BB霜 正常
这些天一直在思考给一个自定义页面模板实现截断,终于在这里找到答案。我用的是get_the_excerpt
@百奥博
其实一直就有你用的函数,因为直接输出是the_excerpt()
是基于substr()写的吗
@飞晏
php内置的
学习了
之前搞过截断,但是表情显示不出来。今天又重新弄了下,原来是设置显示的字数太少了
顺便提一下,你第一个例子那里,问号前少了个分号
@liveme
你真细心,已更正,谢
今天上去你网站访问不了。
请教个问题,怎么表情符号占的字符数那么多的?一旦满足了表情显示,需要的字符数非常多,有没有这个函数控制都一样了。
@liveme
表情符也不是很多吧,而且完全可以不鸟表情输出。
请问下博主,我调用最新文章是使用get_archives('postbypost',10)来实现的,请问应该如何截断呢……自己试了下,怎么都没成功,非常感谢
@wuxinxinggg
用get_posts()吧,在输出标题函数 get_the_title() 下手
请教一下,如果别人用了
,还是会出现两行怎么办?
@youanan
要先把html标签都过滤掉再截取,另外应该是
请问这句函数怎么截断:
php $url = get_post_custom_values("url_value"); echo $url[0];
请帮助我,谢谢你。
@侯永禄
对 $url[0] 截断啊
之前的那个css属性假截断竟然失败鸟,还是这个靠谱些啊
@Duoqiu
哈,用php函数还是比较好的
这个函数能不能得到截断之后的内容呢?
@ProfeeL
这函数不是给你这样用的,不过你如果只要第n个文字以后的内容倒是可以,看函数参数。
我在考虑,怎么设置成根据某个特定的字符阶段,比如用$或者这样的字符,这个之前的截断。
函数很好用 不过有的机子不支持…
@李木
机子不支持就用其他函数,不过要需要改下,自己搜一下吧