使用从大写开始到小写字符的单词更新图像路径

时间:2013-06-28 作者:bpy

我必须在wp\\u posts表中将图像路径转换为小写字符。

现在,我的帖子里有这样的内容:

<img class="alignleft" title="my image title" alt="my image alt" src="http://www.mydomain.com/wp-content/uploads/2012/09/My-Image-Lowercase-First-Char.jpg" width="75" height="75" />
我需要将图像路径中的大写字符更新为小写字符,如下所示:my-image-lowercase-first-char.jpg.

是否可以在phpmyadmin中通过mysql实现?

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

根据服务器及其配置,在不更改文件名的情况下更改路径大小写可能会中断链接。

但是为了直接回答这个问题,您可以使用MySQL\'s REPLACE and LOWER, 但我建议不要这样做。MySQL有一些regex功能,但不多。到目前为止,PHP的正则表达式更好。

拉起你的帖子,在上面打圈,然后固定链接。运行以下操作:

function replace_cb($matches) {
  if (!empty($matches[1])) {
    return \'src="\'.strtolower($matches[1]).\'"\';
  } else {
    return $matches[0];
  }
}
function reset_paths() {
  global $wpdb;
  // debug using a specific post ID
  // $posts = $wpdb->get_results("SELECT ID,post_content FROM {$wpdb->posts} WHERE ID = 128");
  // remove the where for a real run over all posts
  $posts = $wpdb->get_results("SELECT ID,post_content FROM {$wpdb->posts}");
  $pattern = \'|src="([^"]+)"|\';
  foreach ($posts as $p) {
    define( \'DOING_AUTOSAVE\', true );
    $p->post_content = preg_replace_callback($pattern,\'replace_cb\',$p->post_content);
    wp_update_post($p);
  }
}
reset_paths(); // run the function
reset_paths(); 在函数定义下面是触发它的因素--实际运行函数的因素。

但在生产中尝试之前,请使用一次性数据在dev服务器上进行备份和彻底测试。

如果你有很多帖子,你可能会有超时或内存问题,所以要注意这一点。如果确实存在问题,则必须以增量方式运行该函数。

假设您的标记是一致的。现在,它将替换属性被单引号包围的图像“URL”。

SO网友:Krzysiek Dróżdż

我想,您可以使用以下插件之一:1。http://wordpress.org/plugins/search-and-replace/ 1.http://wordpress.org/plugins/search-regex/

只需在修改数据库之前进行备份;)

另一种方法是手动执行:

将数据库导出到SQL(带数据)

  • 将修改后的数据库导入服务器
  • 也不要忘记使用FTP更改文件名。

    结束

    相关推荐

    GET_POSTS-找出查询字符串是否是垃圾并使用了回退

    如果我们将字符串传递给以下函数get_posts, 并且该字符串不是有意义的查询字符串(例如get\\u posts(“”)),该函数返回默认查询的结果(最后五篇posts或类似的结果)。是否有可能抑制这种行为,或者更好的是,找出字符串是否是有意义的查询字符串,或者函数是否只是返回到默认值,因此它不是?更改默认查询设置不是一个解决方案,因为我不想影响主循环,而只想调用get_posts 在插件中。