如何用php截取一定长度的文本?

发布于 2024-08-20 04:12:05 字数 241 浏览 5 评论 0原文

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

但其中一些比 div 宽度长,所以我想砍掉 if 并在它们后面添加 3 个点(如果它们比 30 个字符长)。

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

我怎样才能做到这一点?

i wanna get some field values from database and present them on html.

but some of them are longer than the div width so i wanted to chop if of and add 3 dots after them if they are longer than lets say 30 characthers.

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

how can i do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

鹤舞 2024-08-27 04:12:05

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

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);

If you need to perform this kind of functionality more than once, consider this function:

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;
}

Usage:

echo truncate($string, 30);
孤蝉 2024-08-27 04:12:05

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

if (strlen($str) > 30)
{
    echo substr($str, 0, 30) . '...';
}

Judging by your examples you don't seem to care about preserving words, so here it is:

if (strlen($str) > 30)
{
    echo substr($str, 0, 30) . '...';
}
方觉久 2024-08-27 04:12:05

如果您使用Smarty,则可以使用截断 修饰符。

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

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

If you use Smarty, you can use the truncate modifier.

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

BTW, such kind of function should exist in any decent template engine.

剧终人散尽 2024-08-27 04:12:05

查看 wordwrap(),这应该就是您要查找的内容为了。

Check out wordwrap(), that should be what you're looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文