打开/关闭搜索
搜索
打开/关闭菜单
60
73
29
1.1K
武外梗百科
导航
首页
最近更改
随机页面
站务
其他
友链
特殊页面
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
讨论
贡献
创建账号
登录
编辑“︁
Module:PageSummary
”︁
武外梗百科 爱国好学自强图新的百科全书
查看
阅读
编辑
查看历史
associated-pages
模块
讨论
更多操作
240d:c010:132:2::ba
(
留言
)
2026年2月18日 (三) 13:27的版本
(
差异
)
←上一版本
|
最后版本
(
差异
) |
下一版本→
(
差异
)
警告:您正在编辑该页面的旧版本。
如果您发布该更改,该版本后的所有更改都会丢失。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
local p = {} -- 高性能清理函数 local function smartClean(text) if not text then return "" end -- 1. 预处理:去掉 HTML 注释、脚注、数学公式等标签块 text = mw.ustring.gsub(text, "<!%-%-.-%-%->", "") text = mw.ustring.gsub(text, "<ref[^>]*>.-</ref>", "") text = mw.ustring.gsub(text, "<ref[^>]-/>", "") text = mw.ustring.gsub(text, "<math[^>]*>.-</math>", "") -- 2. 去除表格 (MediaWiki 表格以 {| 开始,|} 结束) -- 使用非贪婪匹配,重复执行以处理多个表格 text = mw.ustring.gsub(text, "{|[^{}]*|}", "") -- 先处理最内层不含嵌套的 text = mw.ustring.gsub(text, "{|.-|}", "") -- 扩展清理 -- 3. 递归剥离模板 {{...}} -- 性能优化:限制循环次数,防止死循环 local prev, count = "", 0 repeat prev = text text = mw.ustring.gsub(text, "{{[^{}]-}}", "") count = count + 1 until text == prev or count > 10 -- 4. 剥离图片、分类等 [[File:xxx]] -- 逻辑:匹配所有中括号,如果是媒体文件则删掉,如果是普通链接则保留文字 text = mw.ustring.gsub(text, "%[%[([^%[%]]-)%]%]", function(inner) local l_inner = mw.ustring.lower(inner) if l_inner:match("^file:") or l_inner:match("^image:") or l_inner:match("^category:") or l_inner:match("^文件:") or l_inner:match("^图像:") or l_inner:match("^分类:") then return "" -- 丢弃附件 end -- 保留链接文字:[[A|B]] -> B, [[A]] -> A local parts = mw.text.split(inner, "|") return parts[#parts] end) -- 5. 清理剩余的格式字符 text = mw.ustring.gsub(text, "''+", "") -- 去掉粗斜体 text = mw.ustring.gsub(text, "==+.-==+", "") -- 去掉标题 text = mw.ustring.gsub(text, "\n%s*[*#:]+", " ") -- 列表转空格 text = mw.ustring.gsub(text, "\n+", " ") -- 换行转空格 text = mw.ustring.gsub(text, "%s+", " ") -- 压缩多余空格 return mw.text.trim(text) end function p.getSummaryAndImage(frame) local pageName = frame.args[1] or "" local title = mw.title.new(pageName) if not title or not title.exists then return "" end -- 性能优化:只读取前 2000 个字符进行解析,而不是全篇,防止超大页面卡死 local content = mw.ustring.sub(title:getContent() or "", 1, 2000) -- 1. 提取第一张图(直接在原文找,不干扰摘要) local firstImage = mw.ustring.match(content, "%[%[%s*[Ff]ile%s*:([^|%]%s]+)") or mw.ustring.match(content, "%[%[%s*文件%s*:([^|%]%s]+)") or mw.ustring.match(content, "%[%[%s*[Ii]mage%s*:([^|%]%s]+)") -- 2. 提取摘要 local cleanText = smartClean(content) local targetLen = 140 local summary = mw.ustring.sub(cleanText, 1, targetLen) if mw.ustring.len(cleanText) > targetLen then summary = summary .. "..." end -- 3. 渲染 UI local container = mw.html.create('div'):css({ ['margin-bottom'] = '20px', ['padding'] = '15px', ['border'] = '1px solid #e2e2e2', ['border-radius'] = '8px', ['background-color'] = '#fff', ['box-shadow'] = '0 2px 5px rgba(0,0,0,0.05)', ['display'] = 'flow-root' }) -- 标题 container:tag('div') :css({['font-size'] = '1.2em', ['font-weight'] = 'bold', ['margin-bottom'] = '8px', ['color'] = '#000'}) :wikitext('[[' .. pageName .. ']]') -- 正文容器 local body = container:tag('div'):css({['font-size'] = '14px', ['line-height'] = '1.6', ['color'] = '#444'}) -- 图片右浮动 if firstImage then body:wikitext('[[File:' .. firstImage .. '|100px|right|link=' .. pageName .. ']]') end body:wikitext(summary) return tostring(container) end return p
摘要:
请注意,所有对武外梗百科的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
武外梗百科:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
预览使用本模板的页面
该页面使用的模板:
Module:PageSummary/doc
(
编辑
)
编辑“︁
Module:PageSummary
”︁
武外梗百科 爱国好学自强图新的百科全书