我已经搜索过这个以及其他许多人谈论替换命令,但我不想对此做错事。
我的情况是:我有一个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>', '' )
答案 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);
?>