什么是“万能过滤”?
“万能过滤”是织梦DedeCMS内容模型中的一个功能,主要用于在内容发布或采集入库时,对文章的、摘要等字段进行一系列的自动化处理。

(图片来源网络,侵删)
它的核心作用是:自动化地“清洗”和“规范”内容,去除不需要的元素,统一格式,提升用户体验,并利于SEO。
主要应用场景:
- 采集后处理:这是最常用的场景,从其他网站采集来的内容通常带有大量无关信息,如版权声明、广告、无关链接、原文来源等,万能过滤可以一键清除这些。
- 用户投稿/前台发布:规范用户提交的内容,去除恶意代码、无关标签,保持网站风格统一。
- 批量处理旧内容:对网站已有的文章进行批量格式化处理,统一风格。
万能过滤在哪里设置?
万能过滤的设置位置与你使用的内容模型密切相关。
-
采集时设置:
(图片来源网络,侵删)- 进入“采集” -> “一键采集”或“自定义采集”。
- 在设置采集规则的最后一步,有一个“万能过滤”的选项卡,这里的过滤规则仅对本次采集有效。
-
内容模型中设置(推荐):
- 这是更常用、更强大的方式,设置一次,适用于所有通过该模型发布的内容(包括采集、后台发布、前台投稿等)。
- 进入“核心” -> “内容模型管理”。
- 点击你想要修改的模型(通常是“文章”模型),进入“字段管理”。
- 找到你需要过滤的字段,如
title(标题)、body(文章内容)、description(。 - 在该字段的“万能过滤”文本框中,填写你的过滤规则。
万能过滤的核心功能与规则详解
万能过滤主要包含三大类功能:替换、移除、正则表达式,你可以组合使用它们。
基础替换
这是最简单的功能,用新内容替换旧内容。
- 格式:
|新内容 - 示例:
织梦cms|DedeCMS:将文章中所有的“织梦cms”替换为“DedeCMS”。来源:织梦家园|:将“来源:织梦家园”整个字符串替换为空(即删除)。
移除标签/内容
用于删除特定的HTML标签或标签内的所有内容。
- 格式:
<标签名> - 示例:
<script>:删除所有<script>及其内部的JavaScript代码。<iframe>:删除所有<iframe>嵌入的框架。<div class="ad">...</div>:特别注意,这个格式是错误的,它只会删除<div class="ad">这个开始标签,而不会删除整个块,要删除整个块,必须使用正则表达式(见下文)。
移除特定属性
用于删除HTML标签中的某个特定属性,比如超链接的 target="_blank" 或图片的 style 属性。
- 格式:
<标签名|属性名> - 示例:
<a|target>:删除所有<a>标签中的target属性。<img|style>:删除所有<img>标签中的style属性,防止图片被CSS撑大或变形。<p|class>:删除所有<p>标签中的class属性。
强大的正则表达式过滤
这是万能过滤的精髓,可以实现极其复杂的匹配和替换。强烈建议使用Notepad++等支持正则的工具进行测试,再填入织梦。
- 格式:
{正则表达式} - 示例:
| 目的 | 正则表达式 | 说明 |
|---|---|---|
| 删除整个特定div块 | {<div id="post_content">.*?</div>} |
匹配并删除从 <div id="post_content"> 到 </div> 之间的所有内容。 是非贪婪匹配,确保只匹配到最近的闭合标签。 |
| 删除所有超链接,但保留文字 | {<a.*?>(.*?)</a>} |
匹配 <a> 和 </a> 之间的所有内容,并将其替换为捕获组 的内容(即链接文字)。 |
| 删除特定class的span | {<span class="author">.*?</span>} |
删除class为"author"的整个span标签及其内容。 |
| 删除文章末尾的版权声明 | {(来源:.*?|转载请注明:.*?|本文链接:.*?)} |
匹配并删除以“来源:”、“转载请注明:”或“本文链接:”开头的任意字符,直到换行。 表示“或”。 |
| 移除图片的宽度和高度属性 | {<img\s+([^>]*?)\s*width="[^"]*"\s+([^>]*?)\s+height="[^"]*"\s*(.*?)>} |
匹配并删除 <img> 标签中的 width 和 height 属性,这个正则比较复杂,但很实用。 |
| 删除HTML注释 | {<!--.*?-->} |
匹配并删除所有 <!-- --> 格式的HTML注释。 |
| 清理多余的空格和换行 | { } |
删除所有不间断空格。{\s+} 可以删除多余的空白字符,但需谨慎使用,可能破坏格式。 |
实战案例:采集小说后如何设置万能过滤?
假设我们从某个网站采集小说,采集到的内容格式如下:
<h1>第一章 开篇</h1>
<p>这是小说的第一段内容。</p>
<p>这是第二段内容。</p>
<div class="ad">
<script>...广告代码...</script>
<a href="ad-link">点击购买</a>
</div>
<p>小说继续,这是第三段内容。</p>
<p class="copyright">本文转载自:XX小说网,作者:张三,原文链接:http://...</p>
<p>小说结尾。</p>
目标:得到干净、只有正文内容的小说章节。
万能过滤规则设置(按顺序填写):
-
移除广告块:
- 规则:
{<div class="ad">.*?</div>} - 说明:使用正则表达式精确删除整个广告容器。
- 规则:
-
移除所有JavaScript:
- 规则:
<script> - 说明:清除所有脚本标签。
- 规则:
-
移除版权信息:
- 规则:
{<p class="copyright">.*?</p>} - 说明:使用正则删除包含版权信息的特定段落。
- 规则:
-
移除多余的空格和换行(可选):
- 规则:
- 说明:清理不间断空格。
- 规则:
-
清理图片样式(如果内容中有图片):
- 规则:
<img|style> - 说明:防止图片样式被篡改。
- 规则:
将变为:
<h1>第一章 开篇</h1> <p>这是小说的第一段内容。</p> <p>这是第二段内容。</p> <p>小说继续,这是第三段内容。</p> <p>小说结尾。</p>
最佳实践与注意事项
- 顺序很重要:过滤规则是按照从上到下的顺序执行的,如果你想先移除
<script>标签,再处理里面的内容,顺序就不能反。 - 测试,再测试:在正式应用到大量数据前,务必在后台发布一篇文章或进行一次小范围采集,检查过滤效果是否符合预期,正则表达式一旦写错,可能导致内容错乱或丢失。
- 模型”:将过滤规则设置在内容模型中,而不是每次采集时都设置,这样可以一劳永逸。
- 备份!备份!备份!:在修改规则,特别是使用复杂的正则表达式前,务必备份你的数据库,以防规则错误导致大量数据损坏。
- 不要过度过滤:不要为了追求“完美”而设置过于激进的规则,这可能会误删正文中的重要部分,保持克制,只清除确定不需要的内容。
- 学习正则表达式:虽然基础替换够用,但真正发挥“万能过滤”威力的是正则表达式,花点时间学习基本的正则语法(
[])能让你事半功倍。
织梦的“万能过滤”是一个功能强大但需要谨慎使用的工具,它就像是内容的“自动化清洁工”,通过合理组合替换、移除标签、移除属性和正则表达式,你可以高效地处理来自各种渠道的原始内容,让你的网站内容始终保持整洁、规范和专业。
