簡體   English   中英

切割字符串大小時如何停止bbcode被切斷?

[英]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模塊。

http://php.net/manual/zh/book.bbcode.php

對此可能沒有簡單的解決方案。 您需要檢查整個輸入字符串字符,以記住存儲堆棧中每個打開的bbcode標記(=也稱為Lexer)的字符。 然后,如果已達到字符數限制,則需要附加已存儲在堆棧中的所有關閉bbcode標記。

另外,您的truncate函數還有一個很大的缺點,那就是它將bbcode標記本身視為文本長度的一部分。 假設用戶通過[url = http://非常長的鏈接]圖片[/ url]發布了250個字符的長鏈接。 例如,Google圖片會創建如此長的鏈接。

最好的選擇是針對這些情況完全刪除bbcode,除非該功能證明解決方案需要進行5到20個小時的編程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM