2010年07月08日 78条评论

mb_strimwidth函数的简单应用

在《简单的文章截断方法, 支持 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的版本。

zww
or
oooo

“mb_strimwidth函数的简单应用”有78条评论

  1. Duoqiu says:

    之前的那个css属性假截断竟然失败鸟,还是这个靠谱些啊

    1. zwwooooo says:

      @Duoqiu
      哈,用php函数还是比较好的

  2. ProfeeL says:

    这个函数能不能得到截断之后的内容呢?

    1. zwwooooo says:

      @ProfeeL
      这函数不是给你这样用的,不过你如果只要第n个文字以后的内容倒是可以,看函数参数。

  3. Laycher says:

    我在考虑,怎么设置成根据某个特定的字符阶段,比如用$或者这样的字符,这个之前的截断。

  4. [...] 昨天折腾了一个函数的用法,有细心留意的童鞋会发现网站整齐了点,为什么?侧边栏的最热留言等,还有首页中间的四个栏目输出的文章标题全部变成了只有一行,后面多出的就有省略号表示了。这就是用到了一个php函数:mb_strimwidth,主要用于文章的截断。主要是参考了ZWWoOoOo那里介绍的,传送门:《mb_strimwidth函数的简单应用》。不过我这里介绍的除了zww那里介绍的之外,还提供了一种解决乱码的方案。 [...]

  5. 李木 says:

    函数很好用 不过有的机子不支持…

    1. zwwooooo says:

      @李木
      机子不支持就用其他函数,不过要需要改下,自己搜一下吧

发表评论

昵称 *

网址

B em del U Link Code Quote