問題場景
在具有文章發佈功能的系統和網站中,通常會使用富文本編輯器對文章內容進行編輯,而很多常用的富文本編輯器(如百度的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測試可用,其他類型的數據庫在具體寫法上可能會略有不同。