1、织梦已经给我们准备好了数据库内容替换工具,在采集->批量维护->数据库内容替换
(4)、替换内容留空。
2、织梦的文章内容一般在放在dede_addonarticle表body字段中。
(1)、选择好数据表和字段。
(2)、选择替换方式为正则表达式,填写主键字段(表的主键)。
(3)、填写被替换内容,正则表达式:
<img(.*)src=\"([^\"]+)\"[^>]+>
(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();
版权声明:博主文章,可以不经博主允许随意转载,随意修改,知识是用来传播的。