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