
使用EyouCMS的自动采集功能时,采集到的内容中经常包含目标站点的广告链接、推广代码或无关的HTML元素。这些内容不仅影响网站美观,还可能带来安全风险。手动清理效率低下,因此需要通过技术手段实现自动化过滤。
EyouCMS的采集过滤主要依赖两个环节:采集规则中的内容替换规则,以及系统级的全局过滤函数。本指南将同时覆盖这两种方法,确保过滤彻底。
在创建或编辑采集规则时,通过“内容替换规则”对采集到的HTML源码进行字符串替换。此方法针对性强,适用于特定站点的固定广告模式。
修改EyouCMS核心文件中的内容处理函数,对所有入库的内容进行二次清洗。此方法作为安全网,处理规则中未覆盖的“漏网之鱼”。
登录EyouCMS后台,进入“系统”->“采集管理”,编辑或新建一条采集规则。
使用浏览器的开发者工具(F12)审查元素,分析目标文章页面中广告部分的HTML代码特征。常见特征如下:
- 链接(a标签)的href属性包含推广关键词,如“ad”、“go”、“click”等
- 嵌入的script标签或iframe标签
- 带有特定样式的图片或文字段落
步骤2:配置替换规则
在采集规则的“内容替换”选项卡中,添加规则。一条规则分为“被替换内容”和“替换为”两部分。“被替换内容”支持正则表达式。
以下是几个可直接复制使用的高效规则示例:
示例1:删除整个广告DIV容器
```
被替换内容:]>.?
替换为:(留空)
```

示例2:清除所有带推广特征的超链接,但保留链接文本
```
被替换内容:]href="[^"](?:ad|go|click|sponsor)[^"]"[^>]>(.?)
替换为:$1
```
示例3:删除所有script和iframe标签
```
被替换内容:<(?:script|iframe)\b[^<](?:(?!(?:script|iframe)>)<[^<])(?:script|iframe)>
替换为:(留空)
```
操作要点:每条规则独占一行。规则将按顺序执行。务必在测试文章上预览效果,确认过滤准确无误后再进行正式采集。
四、全局过滤函数增强实操
此方法修改核心文件,请在操作前务必备份原文件。
步骤1:定位并编辑处理函数
用代码编辑器打开文件:/core/library/think/hook.php(路径可能因版本略有不同,核心思想是找到内容入库前的处理钩子或函数)。
更通用的方法是,在内容模型对应的处理逻辑中增加过滤。编辑文件:/application/common/model/ArticleContent.php(假设是文章模型)。
步骤2:插入自定义过滤函数
在类定义中,找到内容入库前调用的方法(通常是`before_insert`或`before_update`钩子,或`save`方法内部)。添加一个自定义的过滤方法调用。
示例:在`ArticleContent`模型的`before_insert`方法中增加过滤。
```php
// 在 ArticleContent 类中添加一个方法
protected function filterAds($content) {
// 规则1:去除特定class的div
$pattern1 = '/]>.?<\/div>/is';
$content = preg_replace($pattern1, '', $content);
// 规则2:去除所有script标签
$pattern2 = '/