使用SQL命令(最推荐,最直接)
这是最快速、最彻底的方法,但操作前务必备份数据库!

(图片来源网络,侵删)
第1步:备份数据库
这是最重要的一步,防止操作失误导致数据丢失,您可以通过以下方式备份:
- DedeCMS后台:进入【系统】->【数据库备份/还原】->【选择数据表备份】。
- phpMyAdmin:登录您的数据库管理工具,选择对应的数据库,然后点击“导出”。
第2步:执行SQL命令
登录您的phpMyAdmin,选择您的DedeCMS数据库,然后点击“SQL”选项卡,将以下命令粘贴进去并执行。
核心命令:
这条命令会查找 body 字段中所有形如 <a href="..."><img ...></a> 的链接,并将其替换为 <img ...>,同时保留 img 标签的所有原始属性(如 src, alt, title, width, height 等)。

(图片来源网络,侵删)
UPDATE dede_addonarticle SET body = REPLACE(
body,
CONCAT('<a href="',
(SELECT SUBSTRING_INDEX(body, '"', 3) FROM dede_addonarticle AS t WHERE t.aid = dede_addonarticle.aid),
'"><img'),
'<img'
);
⚠️ 重要说明:
-
表名
dede_addonarticle:- 如果您的文章是“普通文章”,那么表名就是
dede_addonarticle。 - 如果您使用了“图集”模型,表名可能是
dede_archives和dede_addonimages,需要修改SQL。 - 如果您使用了自定义模型,请找到对应的附加表名(通常是
dede_addonxx,xx是模型ID)。
- 如果您的文章是“普通文章”,那么表名就是
-
执行原理:
- 这个SQL的工作原理是:对于每一篇文章,它先找到
<a href="后面的第一个URL(通过SUBSTRING_INDEX截取到第一个 ),然后拼凑出完整的<a href="URL"><img标签,最后用REPLACE函数将其替换为<img。 - 这个方法非常巧妙,可以处理不同URL的图片链接,而不仅仅是固定URL。
- 这个SQL的工作原理是:对于每一篇文章,它先找到
-
测试:
(图片来源网络,侵删)- 在执行前,可以先在SQL语句的
UPDATE后面加上LIMIT 1,只更新一篇文章,检查效果是否符合预期。UPDATE dede_addonarticle SET body = REPLACE(...) LIMIT 1;
- 在执行前,可以先在SQL语句的
使用DedeCMS批量处理插件(适合新手)
如果您不熟悉SQL,可以使用现成的插件来实现这个功能。
-
搜索插件:
- 在DedeCMS官方论坛、模板市场或第三方资源网站(如“织梦模板网”)搜索关键词如“批量去除超链接”、“内容处理工具”、“SQL批量执行器”等。
-
安装插件:
下载插件并按照说明安装到您的DedeCMS网站中。
-
使用插件:
- 进入后台,找到插件的管理界面,通常会有一个类似“批量处理文章内容”、“去除内容超链接”的功能。
- 选择要处理的栏目(全站或指定栏目),然后点击执行,插件会自动完成SQL操作,界面通常更友好。
优点:操作简单,可视化界面,适合不熟悉数据库的用户。 缺点:可能需要寻找可靠的插件,且不如自定义SQL灵活。
编写PHP脚本执行(适合开发者)
如果您有PHP开发能力,可以写一个简单的脚本来遍历所有文章并处理内容。
-
创建脚本文件: 在您的网站根目录下创建一个名为
remove_img_links.php的文件。 -
粘贴以下代码: 请记得修改数据库连接信息(
$dbhost,$dbuser,$dbpass,$dbname)和表名($table_name)。<?php // +---------------------------------------------------------------------- // | 织梦CMS批量去除图片超链接 // +---------------------------------------------------------------------- // 数据库配置信息 $dbhost = 'localhost'; // 数据库主机 $dbuser = 'root'; // 数据库用户名 $dbpass = 'your_password'; // 数据库密码 $dbname = 'your_database_name'; // 数据库名 $table_name = 'dede_addonarticle'; // 文章附加表名 // 连接数据库 $link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); if (!$link) { die('连接数据库失败: ' . mysqli_error($link)); } mysqli_set_charset($link, 'utf8'); // 使用正则表达式替换,更简单直接 // 这个正则会匹配 <a href="任意内容"><img 任意属性></a> 并替换为 <img 任意属性> $pattern = '/<a\s+[^>]*href="[^"]*"\s*>(<img\s+[^>]*>)<\/a>/i'; $replacement = '$1'; // 查询所有文章ID和内容 $query = "SELECT aid, body FROM {$table_name}"; $result = mysqli_query($link, $query); $count = 0; while ($row = mysqli_fetch_assoc($result)) { $old_body = $row['body']; $new_body = preg_replace($pattern, $replacement, $old_body); // 如果内容有变化,则更新数据库 if ($old_body != $new_body) { $update_query = "UPDATE {$table_name} SET body = '{$new_body}' WHERE aid = {$row['aid']}"; if (mysqli_query($link, $update_query)) { $count++; echo "文章 ID {$row['aid']} 处理成功。<br>"; } else { echo "文章 ID {$row['aid']} 处理失败: " . mysqli_error($link) . "<br>"; } } } mysqli_close($link); echo "<hr>"; echo "处理完成!共更新了 {$count} 篇文章。"; ?> -
执行脚本: 在浏览器中访问
http://您的域名/remove_img_links.php,脚本会自动运行并处理所有文章。
优点:逻辑清晰,可控性强,可以结合其他复杂逻辑。 缺点:需要服务器执行PHP脚本,有一定技术门槛。
总结与建议
| 方法 | 优点 | 缺点 | 推荐人群 |
|---|---|---|---|
| SQL命令 | 最快、最彻底、效率最高 | 有风险,操作前必须备份数据库 | 所有有一定技术基础的用户 |
| 插件 | 操作简单,可视化界面 | 需要寻找可靠插件,功能可能受限 | 不熟悉SQL和数据库的新手 |
| PHP脚本 | 灵活可控,可扩展性强 | 需要编写和执行代码,技术门槛较高 | 开发者或有PHP基础的用户 |
强烈建议您优先使用【方法一:SQL命令】,因为它最直接,且不会在网站文件中留下任何痕迹,请一定记得先备份数据库!
