作为将网站迁移到HTTPS的一部分,我将博客文章中的HTTP网址更改为相对网址。
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' /> ║
╚════╩═══════════════════════════════════════════════════════════════╝
带有相对网址的所需输出:
╔════╦═══════════════════════════════════════════════════════════════╗
║ 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 中的一些正则表达式,允许仅更新列的一部分而不会浪费资源经历了数百行,每行有数千个字符?
答案 0 :(得分:2)
你不需要PHP。它可以通过简单的数据库查询来完成:
UPDATE articles SET content = REPLACE(content, 'http:', '');