我正在为后续案例寻找解决方案。 我有一个字符串
"This is a long string of words"
我只想使用前几个单词,但是如果我只是在第20个字符之后删除所有内容,它将如下所示:
"This is a long strin"
我可以先抓3个字
implode(' ', array_slice(explode(' ', "This is a long string of words"), 0, 3));
但在某些情况下,3个字会变得太短“I I I”。
如何在第20个字符之前尽可能多地抓住单词?
答案 0 :(得分:6)
答案 1 :(得分: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);
}
}