MYSQL:如何用REGEXP替换字符串

时间:2015-05-02 04:56:52

标签: mysql

我有一个wordpress网站,在我的帖子中,有很多内容包括http://web.archive.org/web/[0-9]+/

我已经运行了以下查询:

SELECT id,post_title,post_content
FROM wp_posts
WHERE post_content REGEXP 'http://web.archive.org/web/[0-9]+/'

但是,我的问题不是选择,而是替换,如你所知,替换不能直接使用RegEx。

那么如何在我的所有帖子中将所有http://web.archive.org/web/[0-9]+/替换为空?

应该是

update wp_posts set post_content = replace(post_content, "http://web.archive.org/web/[0-9]+/", "")

2 个答案:

答案 0 :(得分:0)

无论如何,我用php

完成了它
    while($row = mysql_fetch_assoc($result)) 
{
    //$data[] = $row;

    $pattern      = "/http\:\/\/web\.archive\.org\/web\/[^\/]+\/http\:/i";
    $post_content = preg_replace($pattern, 'http:', $row['post_content']);

    echo mysql_query("UPDATE `wp_posts` SET `post_content` = '".mysql_real_escape_string($post_content)."' WHERE ID = ".$row['ID']) ? $row['ID'].'<br>' : '<font color=red>'.$row['ID'].'</font><br>';

}

答案 1 :(得分:-1)

如果SELECT工作,那么这个简单的修改也应该起作用

UPDATE wp_posts SETS post_content = '' WHERE post_content REGEXP 'http://web.archive.org/web/[0-9]+/'