【发布时间】:2011-09-29 13:41:16
【问题描述】:
我有一个网页,它显示多个文本条目,它们的长度没有限制。如果它们太长而无法避免进入新生产线,它们会被自动剪切。这是剪切它们的 PHP 函数:
function cutSentence($sentence, $maxlen = 16) {
$result = trim(substr($sentence, 0, $maxlen));
$resultarr = array(
'result' => $result,
'islong' => (strlen($sentence) > $maxlen) ? true : false
);
return $resultarr;
}
如下图所示,结果很好,但也有一些例外。包含多个 Ms 的字符串(我必须考虑这些)将转到换行符。
现在所有字符串都在 16 个字符后被删减,这已经非常低并且难以阅读。
我想知道是否存在一种方法来确保应该获得更多空格的句子得到它,并且那些包含宽字符的句子最终被削减为更少的字符(请不要建议使用 CSS 属性 text-溢出:省略号,因为它没有得到广泛的支持,它不允许我点击“...”链接到完整的条目,我不惜一切代价需要这个)。
提前致谢。
【问题讨论】:
-
您所做的不是最佳实践... PHP 对 UI 及其样式一无所知,这就是为什么它无法计算最佳文本宽度... 使用 CSS / Javascript .添加“查看更多”链接是另一个与您的问题无关的故事。
-
另请注意,您似乎正在处理 UTF-8 代码,并且没有任何东西可以避免在代码点中间剪切字符串。实际上,想想看:组合字符这样的任务绝对在一般意义上是不平凡的。