上下文:想象一下文章预览流,点击后会导致他们自己的网页(不相关)。
每个预览都将包含一个标题和一个内容样本(字符串),该内容来自所代表文章的顶部,附加了“read more”锚点。 底部的简单示例。
我的目标:截断超出预览容器宽度的任何文本。标题是一行,内容为三行。
现在,我不是特别确定PHP能够根据容器宽度修剪字符串。但我知道,可以修剪一定数量的字符,如this。我的代码很相似......
// $data is an associate array full of stuff
foreach ($data as $key => $row) {
$data[$key]['artcl_trunc_title']
= (strlen($row['artcl_title']) > 100) ? $trimmed = substr($row['artcl_title'], 0, 100) . '..' : $row['artcl_title'];
$data[$key]['artcl_trunc_content']
= (strlen($row['artcl_content']) > 300) ? substr($row['artcl_content'], 0, 300) . '.. <a href="">READ MORE</a>' : $row['artcl_content'];
}
问题在于根据设定的数字修剪文本。除了并非所有字符都具有相同的宽度之外,这不会成为问题。请看以下示例(两行都是20个字符。)
....................
WWWWWWWWWWWWWWWWWWWW
现在,这是一个问题的真实例子(这两篇文章具有相同的理论特征上限......标题20,内容50)
寂寞的温柔......
所以这个孩子永远不会离开他的家...... 阅读更多
-
WainWright的指南...
我写了这本指南,以帮助那些有专业人士的人阅读更多
这里看起来并不太糟糕,但你可以看到两个内容和标题之间的长度不同。按比例放大并且您正在尝试精确填充一定数量的线条时,这是一场噩梦(因为有时线条可能会出现或消失,具体取决于所使用的字符。)
另外,我并不热衷于使用css溢出:隐藏文字有时会被削减一半。
那么..关于如何处理这个或最佳实践的任何想法? 感谢
TL; DR:正如标题所说。
答案 0 :(得分:0)
我会使用text-overflow: ellipsis;
指令对CSS执行此操作。