dede数据库内容替换,去掉文章内容中的img标签

dede数据库内容替换,去掉文章内容中的img标签

大家好,又见面了,我是全栈君。

1、织梦已经给我们准备好了数据库内容替换工具,在采集->批量维护->数据库内容替换

dede数据库内容替换,去掉文章内容中的img标签 - 怀素真 - 因上努力 果上随缘
2、织梦的文章内容一般在放在dede_addonarticle表body字段中。
dede数据库内容替换,去掉文章内容中的img标签 - 怀素真 - 因上努力 果上随缘
(1)、选择好数据表和字段。
(2)、选择替换方式为正则表达式,填写主键字段(表的主键)。
(3)、填写被替换内容,正则表达式:
<img(.*)src=\"([^\"]+)\"[^>]+>

(4)、替换内容留空。

(5)、根据需要填写替换条件(如aid=123)。
(6)、输入安全码,开始替换。
 
如果上述都填写正确,应该会出现成功替换个数。如果没有,那很大程度上是正则出错了。
在网上找了很多正则img标签的,不过测试了一下都没用。
织梦处理数据库替换的文件在后台的sys_data_replace.php中,代码如下:
//获取替换条件
$condition = empty($condition) ? '' : " And $condition ";

//被替换内容,这里就是我们填写的正则
$rpstring = stripslashes($rpstring);

//简单的进行字符串转义替换
$rpstring2 = str_replace("\\","\\\\",$rpstring);
$rpstring2 = str_replace("'","\\'",$rpstring2);


//构造sql语句进行查询,注意这里的$rpstring2跟下面php用到的正则$rpstring实际上是一样的。

//那么问题就来了,网上很多正则标签在PHP下测试是可以的,不过到MySQL下就不行了。

//百度了一下发现,MySQL不支持正则的零宽断言,对正则的支持也很简单。
$dsql->SetQuery("SELECT $keyfield,$rpfield FROM $exptable WHERE $rpfield REGEXP '$rpstring2'  $condition ");
$dsql->Execute();
$tt = $dsql->GetTotalRow();
if($tt==0)
{
    ShowMsg("根据你指定的正则,找不到任何东西!","javascript:;");
    exit();
}
$oo = 0;
while($row = $dsql->GetArray())
{
    $kid = $row[$keyfield];

    //通过PHP的正则替换把结果集中的数据替换

    $rpf = preg_replace("#".$rpstring."#i", $tostring, $row[$rpfield]);
    $rs = $dsql->ExecuteNoneQuery("UPDATE $exptable SET $rpfield='$rpf' WHERE $keyfield='$kid' ");
    if($rs)
    {
        $oo++;
    }
}
$dsql->ExecuteNoneQuery("OPTIMIZE TABLE `$exptable`");
ShowMsg("共找到 $tt 条记录,成功替换了 $oo 条!", "javascript:;");
exit();

 

转载于:https://www.cnblogs.com/jkko123/p/6294621.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108690.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SQL中like的用法.[通俗易懂]

    SQL中like的用法.[通俗易懂]Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法:例1,查询name字段中包含有“明”字的。这里不要使用*来代替,一般在使用0个或者任意个字符构成的字符

  • 完全二叉树图例_二叉树遍历图解

    完全二叉树图例_二叉树遍历图解画解二叉搜索树

    2022年10月21日
  • 调幅收音机原理图及分析_调频调幅收音机区别

    调幅收音机原理图及分析_调频调幅收音机区别标题:致小白:详解调幅收音机的原理妈妈再也不用担心我不懂收音机啦!作者:Pleiades_Antares出品:BDF元培调查组北京市内包小组版权声明:本作系完全原创,他人不得在原作者不知

  • 关于java类加载正确的是_java类什么时候被加载

    关于java类加载正确的是_java类什么时候被加载注意我们当在另一个类中引用其他类的final静态值的时候,编译器把其他类的final符号引用存储在自己类的常量池中了

  • Unity Shader入门

    Unity Shader入门这篇文章是我在学习蛮牛的一套关于Shader教程(http://www.unitytrain.cn/course/96)后的简单总结,个人感觉这套教程并不是以高级Shader编程为目的的,更像是授人以

  • 线程池详解(通俗易懂超级好)「建议收藏」

    线程池详解(通俗易懂超级好)「建议收藏」目标【理解】线程池基本概念【理解】线程池工作原理【掌握】自定义线程池【应用】java内置线程池【应用】使用java内置线程池完成综合案例线程池线程池基础线程池使用线程池综合案例4.学员练习5.线程池总结概念介绍1:什么是线程池2:为什么使用线程池3:线程池有哪些优势什么是池什么是线程池线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

    2022年10月24日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号