Строка SQL для замены содержимого между 2 словами - PullRequest
1 голос
/ 26 февраля 2011

Я искал это, и многие другие говорят о команде замены, но я не хочу ошибиться с этим.

Мой случай таков: у меня есть блог Wordpress и скрипт, который вставляет содержимое в сообщения.,Теперь я хочу удалить этот новый контент, но сохранить старый.

Это что-то вроде «Это содержимое поста обо мне», это старый контент, и теперь скрипт вставляет еще одну строку и значениеполе выглядит как "This is content of a post about me <div class="spnsor"><a [...]</div>".

В этой части у меня есть другая ссылка от поста к посту.Но это та же конструкция с тем же div и классом.

У меня более 2000 постов, так что очень много для редактирования каждого поста.

Как я могу это исправить из Mysql?

Это нормально, эта команда?UPDATE wp_posts SET post_content = REPLACE ( post_content, '<div class="spnsor">*</div>', '' )

1 Ответ

0 голосов
/ 26 февраля 2011

Если у вас есть доступ к серверу MySQL, вы можете посмотреть здесь: Как заменить регулярное выражение в 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);

?>
...