使用SQL批量處理文章中的圖片路徑

問題場景

在具有文章發佈功能的系統和網站中,通常會使用富文本編輯器對文章內容進行編輯,而很多常用的富文本編輯器(如百度的UEditor)都會把文章中的圖片以帶域名的絕對路徑進行存儲,形式如下:

<img src="http://www.abc.com/upload/images/foo.jpg" />

當原網站域名發生變更,或原域名不可用時,用以上形式在文章中插入的圖片便無法正常訪問。
此時,就需要一種簡便、高效的方式來批量更新文章中的所有圖片路徑。

解決思路

相對於通過程序讀取文章內容,然後使用字符串(或正則)替換,最後再重新保存的方式,直接使用SQL的REPLACE進行操作無疑更加簡便和高效。
形式如下:

UPDATE [表名] SET [字段名] = REPLACE([字段名], '[要替換的內容]', '[新內容]');

解決方案

回到實際的問題場景,假設文章表名爲articles,文章內容字段爲content,目標是把文章中所有圖片路徑中的www.abc.com替換爲新的域名www.xyz.com(當然,這裏具體的替換形式要根據自己的實際需要而定,也可以乾脆把圖片路徑都替換爲一個相對路徑)。
具體SQL寫法:

UPDATE articles SET content = REPLACE(content, 'http://www.abc.com/', 'http://www.xyz.com/')

注:該方法使用MySQL測試可用,其他類型的數據庫在具體寫法上可能會略有不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章