SQL字符串替换2个单词之间的内容

时间:2011-02-26 18:42:51

标签: mysql replace between

我已经搜索过这个以及其他许多人谈论替换命令,但我不想对此做错事。

我的情况是:我有一个Wordpress博客和一个脚本在帖子中插入内容。现在我想删除这个新内容,但要保留旧内容。

类似于&#34;这是关于我的帖子的内容&#34;它的旧内容,现在脚本插入另一行,该字段的值看起来像"This is content of a post about me <div class="spnsor"><a [...]</div>".

在这部分中,我有一个从帖子到帖子的不同链接。但是具有相同div和class的相同构造。

我有超过2000个帖子,所以要编辑每个帖子。

如何从Mysql中解决这个问题?

这个命令好吗? UPDATE wp_posts SET post_content = REPLACE ( post_content, '<div class="spnsor">*</div>', '' )

1 个答案:

答案 0 :(得分:0)

如果您有权访问MySQL服务器,可以在此处查看:How to do a regular expression replace in MySQL?

如果没有,最简单的方法是在php脚本中进行替换。

编辑:

一个简单的PHP脚本。我没有测试过,但它应该可以工作(在本地备份之前尝试)

<?php

    $co = mysql_connect("your server", "your login", "your password");
    mysql_set_charset('utf8');
    mysql_select_db("database name", $co);

    $selectQuery = "SELECT ID, post_content FROM wp_posts";

    $res = mysql_query($selectQuery, $co) or exit(mysql_error());

    while($row = mysql_fetch_assoc($res))
    {
        $updateQuery = "UPDATE wp_posts SET post_content = '" . addslashes(preg_replace("/<div class=\"sponsor\">(.*)<\/div>/", '', $row['post_content'])) . "' WHERE ID = " . $row['ID'];
        mysql_query($updateQuery) or exit(mysql_error());
    }

    mysql_close($co);

?>