Помогите с запросом удалить ссылки из базы

Тема в разделе "Базы данных", создана пользователем grebovich, 12 май 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    318
    Симпатии:
    56
    Помогите c запросом, нужно удалить ссылки из базы opencart
    Общим задача следующая парсером сграбил товар в магазин opencart и в описании атрибутов были ссылки и они соответственно тоже сграбились ,в самой базе я заменил все ссылки старого сайта на свои .... но теперь ссылки в атрибутах остались просто ведут на моем сайте на 404 страницу!
    ссылки имеют вид такой:
    <a href="/generators/diesel/">дизельные</a>
    <a href="/drill/schock/">ударные</a>
    <a href="/svarochnye-apparaty/welding-inverters/">: инверторы</a>
    <a href="/svarochnye-apparaty/welding-machine/">: полуавтоматы</a>

    Итак далее...
    Нужен запрос чтоб удалить все кроме анкора к примеру в <a href="/generators/diesel/">дизельные</a> удалить
    <a href="/generators/diesel/">....</a> чтоб осталось только слово дизельные

    Заранее всем спасибо за помощь.
     
  2. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    616
    Симпатии:
    488
    Может конечно и в мускуле регуляркой как-то можно извернуться.
    Но я бы банально в пхп прошелся циклом по всем записям и удалил ссылки функцией strip_tags.
     
  3. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    318
    Симпатии:
    56
    было бы то что нужно, но как создать запрос по регулярному выражению ... весь нет перерыл а толкового не нашел ни чего...
     
  4. Xaritonov

    Xaritonov Создатель

    Заблокирован
    Регистр.:
    27 ноя 2013
    Сообщения:
    21
    Симпатии:
    2
    PHP:
    $cont preg_replace('#<a href[^>]*>.*?</a>#is'''$text);
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.365
    Регулярка в мускуле умеет только искать выдавая true или false - для замены использовать не получится.
    А так же это удалит картинки и стили оформления...

    Если на новом сайте есть аналогичные старым категории то я делал как-то так:
    Код:
    update `wp_posts` set `wp_posts`.guid = replace (`wp_posts`.guid, 'old_url', 'new_url' );
    Поля и имена таблиц opencart не помню, но думаю проблем не возникнет подогнать под своё.
     
  6. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    616
    Симпатии:
    488
    У strip_tags как бы есть параметр, отвечающий за список тегов, которые нужно оставить :)
     
  7. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.365
    Думаешь ТС станет читать спецификацию функции, если он не смог нагуглить REPLACE или регулярку типа #<a href[^>]*>.*?</a>#i ;)?
     
  8. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    318
    Симпатии:
    56
    Так а как полный запрос сделать не по всей базе его гнать а именно по нужной таблице ... при том что название таблицы product_attribute

    Во во я не такой уж и большой гуру как вы тут :D
     
    Последнее редактирование модератором: 12 май 2014
  9. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.365
    Я от того и решил серьёзно углубляться в изучение PHP, когда понял, что скопированный скрипт 30-60 минут занимается ерундой, которую можно сократить до 10 секунд и одной строчки кода вместо 10...
     
  10. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    318
    Симпатии:
    56
    Пытаюсь так сделать UPDATE `product_attribute` SET `text` = REPLACE(`text`, '#<a href[^>]*>.*?</a>#is', '');
    Говорит что ноль строк и бла бла , то есть ни чего не найдено и соответственно не измененно!
     
Статус темы:
Закрыта.