我有一个包含描述字段的项目表。列出所有项目时,如果文本较长,我希望显示三行文本,后跟“...”。
我可以做类似
的事情<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...
有没有人知道如何解决这个问题?
答案 0 :(得分:1)
当然,当文本到达浏览器中容器元素的边缘时,文本将流向下一行。我假设您的容器宽度由某些样式控制(无论是固定还是响应)。
所以在你的情况下,我放弃了省略号样式,看(从浏览器中实际查看)生成你想要的3行所需的字符数,然后做(我也假设你不想保持HTML):
$description = strip_tags($array[0]->description);
if (strlen($description) > $maximumLength) {
$description = substr($description, 0, $maximumLength) . "...";
}
return $description
当然还有其他方法可以在客户端使用CSS或JavaScript进行此操作,但我在大多数网站上看到的是,他们会根据摘录确定固定长度并且只是说任何超过x
的文本必须截断字符。