Laravel描述格式


Laravel description formatting

我有一个项目表,它有描述字段。在列出所有项目时,如果文本较长,我希望只显示三行文本,后跟"…"。

我可以做一些类似的事情

<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>&nbsp;</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字符的文本都必须被截断。