• PHP中文截字、断字2个函数介绍

    Posted on 一月 4th, 2008 inetdemon No comments

    在写页面的时候常会遇到 30 个字要截字, 超过 30 字加 “…”, 未满 30 字不加.. 等等问题. 之前用 substr 的写法如下:

    $string = strip_tags($string); // 先清掉 html tag, 以免 html tag 被破坏
    $string = mb_substr($string, 0, 80, 'UTF-8');
    $string .= (mb_strlen($string, 'UTF-8') > 80)?'...':'';

    PHP 有很方便的函数mb_strimwidth可以直接达到此功能.

    $string = strip_tags($string);
    $string = mb_strimwidth($string, 0, 80, '...', 'UTF-8');

    在UTF-8 情况下算字长用 strlen 或 mb_strlen 都不是很准确, 所以可以用另一个方法mb_strwidth, 算字的宽度:

    echo mb_strwidth($string, 'UTF-8'); // 算字长

    现在我们回过来看mb_strimwidth的解决方法,如果最后被截断的是2个空格,那么格式就会变得很丑陋,这是我们可以用以下方法:

    rtrim(mb_strimwidth($string, 0, 24))."..."

    今天看了一篇不错的文章:用Tidy库处理用户输入的中文http://nukq.malmam.com/archives/14

    Leave a reply