- 版权声明: 转载时请以超链接形式标明文章原始出处和作者信息
- 本文来自: Domety»《对所有日志的指定字符串进行替换》
- 本文链接: http://domety.com/archives/244/
- 本文作者: DDBug
- 发表时期: 2010-04-04
- 关键字: mysql, phpmyadmin, WordPress
- 收藏本文到:QQ书签 | Google书签 | 百度搜藏 | Yahoo收藏 | 乐收
上午写了一篇《终于解决了半角引号自动转换为全角引号的问题》,果真也有朋友和我一样,用blockquote引用代码,但他们又不想修改wordpress的源代码,所以想把blockquote替换成pre或者code。但又苦于日志太多,一篇一篇的修改也确实太麻烦。在QQ上问我有没有简单的方法……
方法当然是有的,而且还有很多种。比如可以通过写一段php代码,先从数据库中取出所有的日志,再用str_replace函数进行字符串替换,然后再更新数据库。这种方法当然可以,特别是对于插件开发者,可以在插件中增加一个对所有日志替换字符串的功能。但是这个需要一般不是太高,也没必要做到插件中去。其实我们可以充分发挥mysql的实力,也就是一条sql语句的事情。
REPLACE()
稍微了解一点mysql的人都应该知道,mysql定义了很多实用的函数,其中就有一个字符串替换的函数REPLACE(),具体参数如下
REPLACE(str,from_str,to_str)
这是mysql5.5的参考手册中给出的解释,其中str是一个要查找的字符串,from_str是要被替换的字符串,to_str是替换字符串。手册中也给出了一个例子
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
这段例子是把字符串’www.mysql.com’中的’w'替换成’Ww’,替换结果是’WwWwWw.mysql.com’。
开始行动
有了以上的准备知识,让我们实际动手试一试吧,把日志中的blockquote标签替换成code标签或pre标签,以替换成code标签为例。
首先登录你的phpmyadmin管理面板,进入你的wordpress所使用的数据库,编辑sql语句
UPDATE ddd_posts SET post_content = replace( post_content, 'blockquote', 'code' )
其中ddd_posts为你的日志表名,请根据实际情况进行更改(下同)。其实这一个简单的sql语句就可以达到我们的目的了,但是有一个缺点:它不仅会替换<blockquote></blockquote>标签中的blockquote字符串,也会替换掉你在正文中出现的字符串中包含的blockquote。为了避免出现这种情况,我们采取下面这样的安全措施
UPDATE ddd_posts SET post_content = replace( post_content, '<blockquote>', '<code>' ) ; UPDATE ddd_posts SET post_content = replace( post_content, '</blockquote>', '</code>' ) ;
这样就可以准确的把blockquote标签替换成code标签。
替换昵称
我们再举一个常见的例子,有些人写文章的时候喜欢在文章中引入自己的昵称,就像我有的时候会在文章称自己是的DDBug一样。但是一段时间之后作者想改换昵称,这个时候REPLACE函数就又派上了用场。比如我想把DDBug替换成Domety,就可以执行下面这样的sql语句
UPDATE ddd_posts SET post_content = replace( post_content, 'DDBug', 'Domety' )
当然,针对不同的用户,可能还有更多类似的需求,当你碰到类似的问题的时候,考虑一下mysql的REPLACE函数吧,或许能帮上你的忙。
还没有评论,快抢沙发