3

我想从数据库中获取一些字段值并将它们呈现在 html 上。

但是其中一些比 div 的宽度长,所以我想在它们后面加上 3 个点,如果它们比 30 个字符长。

windows vs mac os x-> windows vs m...
threads about windows vista -> threads about win...

我怎样才能做到这一点?

4

4 回答 4

6

如果您需要多次执行此类功能,请考虑以下功能:

function truncate($string, $limit, $break = '.', $pad = '...')
{
    // return with no change if string is shorter than $limit
    if(strlen($string) <= $limit) return $string;

    // is $break present between $limit and the end of the string?
    if(false !== ($breakpoint = strpos($string, $break, $limit)))
    {
        if($breakpoint < strlen($string) - 1)
        {
            $string = substr($string, 0, $breakpoint) . $pad;
        }
    }

    return $string;
}

用法:

echo truncate($string, 30);
于 2010-01-30T04:30:31.193 回答
1

从你的例子来看,你似乎并不关心保留单词,所以这里是:

if (strlen($str) > 30)
{
    echo substr($str, 0, 30) . '...';
}
于 2010-01-30T04:21:43.063 回答
0

如果你使用 Smarty,你可以使用truncate修饰符。

{myLongText|truncate:30:'...':true}

顺便说一句,这种功能应该存在于任何像样的模板引擎中。

于 2012-06-26T08:44:07.530 回答
-2

查看wordwrap(),这应该是您正在寻找的。

于 2010-01-30T04:19:23.863 回答