[英]How to stop bbcode being cut off when cutting a string size?
目前,我正在將文本傳遞給此函數,以將其縮短為255個字符限制的標語:
function myTruncate($string, $limit, $break=".", $pad="...")
{
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit)
{
return $string;
}
// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit)))
{
if($breakpoint < strlen($string) - 1)
{
$string = substr($string, 0, $breakpoint) . $pad;
}
}
return $string;
}
問題是它會不斷切斷bbcode,是否有辦法使其完成(如果它在任何bbcode標記內)被切斷?
不要解析您自己的BBCode。 使用PHP隨附的BBCode
模塊。
對此可能沒有簡單的解決方案。 您需要檢查整個輸入字符串字符,以記住存儲堆棧中每個打開的bbcode標記(=也稱為Lexer)的字符。 然后,如果已達到字符數限制,則需要附加已存儲在堆棧中的所有關閉bbcode標記。
另外,您的truncate函數還有一個很大的缺點,那就是它將bbcode標記本身視為文本長度的一部分。 假設用戶通過[url = http://非常長的鏈接]圖片[/ url]發布了250個字符的長鏈接。 例如,Google圖片會創建如此長的鏈接。
最好的選擇是針對這些情況完全刪除bbcode,除非該功能證明解決方案需要進行5到20個小時的編程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.