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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM