我有一个项目表,它有描述字段。在列出所有项目时,如果文本较长,我希望只显示三行文本,后跟"…"。
我可以做一些类似的事情
<style>
.box {
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
height: 60px;
}
</style>
当有很多文本并且文本被分割成几行时,它工作得很好。但如果我在文本中没有换行符,我只看到一行被缩短的文本。
此外,如果我有像格式的文本
某些东西
//空白行
//空白行
我在写一些东西,因为有些东西不是什么都没有
我得到了我的三行。。。但它看起来很糟糕,因为第一行只有"Something",另外两行是空白的。所以我想在把它从控制器发送到视图之前,我必须预先格式化它,我首先尝试通过删除空行并将整个文本连接到一行来解决这个问题,但这对没有任何作用
$description = preg_replace( "/'r|'n/", "", $array[0]->description);
return $description
这可能是例外,因为HTML格式的文本进入数据库
<p class="MsoNormal">Something<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Blah blah...something else...
有人知道如何解决这个问题吗?
当文本到达浏览器中容器元素的边缘时,文本自然会流到下一行。我认为你的容器的宽度是由一些样式控制的(无论是固定的还是响应的)。
因此,在您的情况下,我会放弃省略号样式,看看(从浏览器中实际查看)需要多少字符才能生成您想要的3行,然后执行(我也认为您不想保留HTML):
$description = strip_tags($array[0]->description);
if (strlen($description) > $maximumLength) {
$description = substr($description, 0, $maximumLength) . "...";
}
return $description
当然,在客户端使用CSS或JavaScript还有其他方法可以做到这一点,但我在大多数网站上看到的是,他们为摘录设定了固定的长度,只说任何超过x
字符的文本都必须被截断。