我有一个显示多个文本条目的网页,这些条目的长度没有限制。如果它们太长以至于无法避开新线路,它们会自动切断。这是削减它们的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属性文本-overflow:省略号,因为它没有得到广泛的支持,它不允许我使“...”点击能够链接到完整的条目,并且我不惜一切代价需要这个)。
在此先感谢。
你在做什么并不是最佳实践...... PHP不知道UI的任何内容以及它是如何设计的,这就是为什么它不能计算最佳文本宽度......使用CSS/Javascript。添加“查看更多”链接是另一个与您的问题无关的故事。 –
另请注意,您似乎正在处理UTF-8代码,并且没有任何适当的位置来避免在中间代码点中切断字符串。实际上,想一想:通过结合字符,这样的任务在一般意义上肯定是不平凡的。 –