2

我正在寻找以下案例的解决方案。我有一个字符串

"This is a long string of words"

我只想使用前几个单词,但如果我只删除第 20 个字符之后的所有内容,它将如下所示:

"This is a long strin"

我可以抓住前三个字

implode(' ', array_slice(explode(' ', "This is a long string of words"), 0, 3));

但在某些情况下,三个单词“II I”会太短。

如何在第 20 个字符之前抓住尽可能多的单词?

4

2 回答 2

6

echo array_shift(explode("\n", wordwrap($text, 20)));

文档:

于 2013-07-06T22:23:00.720 回答
2

在我用 PHP 给你答案之前,你有没有考虑过下面的 CSS 解决方案?

overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;

这将导致文本在最合适的位置被截断,并用省略号...标记截断。

如果这不是您想要的效果,试试这个 PHP:

$words = explode(" ",$input);
// if the first word is itself too long, like hippopotomonstrosesquipedaliophobia‎
// then just cut that word off at 20 characters
if( strlen($words[0]) > 20) $output = substr($words[0],0,20);
else {
    $output = array_shift($words);
    while(strlen($output." ".$words[0]) <= 20) {
        $output .= " ".array_shift($words);
    }
}
于 2013-07-06T22:21:43.767 回答