1
作爲將網站遷移到HTTPS的一部分,我將博客文章中的HTTP URL更改爲相對URL。只更新列的一部分 - 多行
當前數據在articles
表:
╔════╦═══════════════════════════════════════════════════════════════╗
║ ID ║ content ║
╠════╬═══════════════════════════════════════════════════════════════╣
║ 1 ║ lorem ipsum <a href='http://www.example.com/'>link</a> etc ║
║ 2 ║ see more <a href='http://www.example.com/page.html'>here</a> ║
║ 3 ║ bla bla bla <img src='http://www.example.com/image.jpg' /> ║
╚════╩═══════════════════════════════════════════════════════════════╝
所需的輸出與相對URL:
╔════╦═══════════════════════════════════════════════════════════════╗
║ ID ║ content ║
╠════╬═══════════════════════════════════════════════════════════════╣
║ 1 ║ lorem ipsum <a href='//www.example.com/'>link</a> etc ║
║ 2 ║ see more <a href='//www.example.com/page.html'>here</a> ║
║ 3 ║ bla bla bla <img src='//www.example.com/image.jpg' /> ║
╚════╩═══════════════════════════════════════════════════════════════╝
注:這些硬編碼
- 有幾百行鏈接。
- 每行可以包含更多鏈接。
我想今天過的每一行,改變與正則表達式中的鏈接,然後更新該行。
$query = $db->query("SELECT id,content FROM articles WHERE content LIKE '%http://www.example.com%'");
while ($row = $query->fetch_row()) {
$updatedContent = /* some regex to remove the "http:" part */
$db->query("UPDATE articles SET content = ...");
}
但因爲我想學習新的東西,我的問題是:
是否有其他辦法嗎?可能有一些正則表達式在PostgreSQL,將允許只更新列的一部分,而不是浪費資源在數百行上,每個行都有數千個字符?
你也可以用WHERE過濾: 'UPDATE your_table SET your_field = REPLACE(your_field, 'HTTP:', '') WHERE your_field LIKE '%HTTP%'' –