我有一個顯示多個文本條目的網頁,這些條目的長度沒有限制。如果它們太長以至於無法避開新線路,它們會自動切斷。這是削減它們的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代碼,並且沒有任何適當的位置來避免在中間代碼點中切斷字符串。實際上,想一想:通過結合字符,這樣的任務在一般意義上肯定是不平凡的。 –