打开/关闭菜单
60
73
29
1.1K
武外梗百科
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Module:PageSummary:修订间差异

武外梗百科 爱国好学自强图新的百科全书
无编辑摘要
无编辑摘要
第61行: 第61行:
     if not content or content == "" then return "" end
     if not content or content == "" then return "" end


     content = string.gsub(content, "[\0-\31\127]", "")   -- 清理控制字符
     content = string.gsub(content, "[\0-\31\127]", "")
     local rawExcerpt = mw.ustring.sub(content, 1, 800) or ""
     local rawExcerpt = mw.ustring.sub(content, 1, 800) or ""


第87行: 第87行:
     local cleanText = cleanFinal(step1) or ""
     local cleanText = cleanFinal(step1) or ""


     -- 摘要截断(安全版)
     -- 摘要截断(极简安全版,无任何字符类)
     local targetLen = 120
     local targetLen = 120
     local summary = cleanText
     local summary = cleanText
第93行: 第93行:
     local ulen = mw.ustring.len(summary) or 0
     local ulen = mw.ustring.len(summary) or 0
     if ulen > targetLen then
     if ulen > targetLen then
         local temp = mw.ustring.sub(summary, 1, targetLen + 25)
         summary = mw.ustring.sub(summary, 1, targetLen)
 
        local breakPos = nil
        for i = mw.ustring.len(temp), 1, -1 do
            local ch = mw.ustring.sub(temp, i, i)
            -- 安全断点判断(避免复杂字符类)
            if ch == " " or ch == "," or ch == "。" or ch == "!" or ch == "?" or ch == ";" or ch == ":" or ch == "、" or ch == "…" then
                breakPos = i
                break
            end
        end
 
        if breakPos and breakPos > targetLen - 30 then
            summary = mw.ustring.sub(temp, 1, breakPos)
        else
            summary = mw.ustring.sub(temp, 1, targetLen)
        end
 
         summary = mw.text.trim(summary) .. "…"
         summary = mw.text.trim(summary) .. "…"
     else
     else
第116行: 第99行:
     end
     end


    -- HTML 输出
     local container = mw.html.create('div')
     local container = mw.html.create('div')
         :css('margin-bottom', '25px')
         :css('margin-bottom', '25px')