За последние 24 часа нас посетили 16285 программистов и 1581 робот. Сейчас ищет 1591 программист ...

Регулярка для вытаскивания тега

Тема в разделе "Регулярные выражения", создана пользователем Pogran, 24 май 2016.

  1. Pogran

    Pogran Новичок

    С нами с:
    24 май 2016
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. У меня на сайте есть вот такие конструкции.
    PHP:
    1. <blockquote>
    2.     <p><b>6. Разговоры</b> </p>
    3. </blockquote>
    И нужно убрать тег p внутри. Это я делаю правильно вот так
    PHP:
    1. $old_content= preg_replace('!<blockquote><p>(.*?)</p></blockquote>!si',"<blockquote>\\1</blockquote>",$old_content);
    А вот есть ещё такие варианты
    PHP:
    1. <a href="http://site/wp-content/uploads/total-soul-2016-by-elena-kuznetsova-16.jpg"><img class="aligncenter size-medium wp-image-67540" alt="total soul 2016 by elena kuznetsova (16)" src="http://site/wp-content/uploads/total-soul-2016-by-elena-kuznetsova-16-650x862.jpg" width="650" height="862" /></a>
    Здесь мне нужно в таких конструкциях оставить только тег img без тега а. Как мне правильно это сделать?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Pogran

    Pogran Новичок

    С нами с:
    24 май 2016
    Сообщения:
    5
    Симпатии:
    0
    немного не понял а как мне это поможет? у меня же тег а может быть в других конструкциях вида <а>test</a> . Ну и другие теги будут ещё в выдаче.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Указал какие теги можно оставить, остальные будут удалены, для второго случая подойдёт.
    Можно ещё через DOM получить нужное дерево и удалить в нём не нужное, смотри simplehtmldom
     
  5. Pogran

    Pogran Новичок

    С нами с:
    24 май 2016
    Сообщения:
    5
    Симпатии:
    0
    Мне эти варианты не подходят. я для simplehtmdom это и делаю. Мне именно до того как я начну смотреть дерево нужно заменить конструкции <a href="bla-bla"><img scr="test/test"></a> на конструкции вида <img src="test/test"> . Удалять просто тег а я не могу, т.к он может использоваться в других конструкциях вида <a href="test1"><p>test</p></a> и т.д.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Значит тебе надо всё что в теге "A"?
     
  7. Pogran

    Pogran Новичок

    С нами с:
    24 май 2016
    Сообщения:
    5
    Симпатии:
    0
    да мне надо всё что в теги а, при условии если там картинка. В идеале нужно регулярку написать для этого для замены конструкций. К самом начале я написал как я сделал регулярку для обычных тегов
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    проще разбить на два этапа, проверить есть ли там тег img, можно и без регулярки и если есть использовать тогда регулярку для копирование всего содержимого тега "A", эту регулярку можно отыскать в интернете.
     
  9. Pogran

    Pogran Новичок

    С нами с:
    24 май 2016
    Сообщения:
    5
    Симпатии:
    0
    понял сейчас попробую
     
  10. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Как уже и сказали, проще заюзать DOM.
    К тому же какая разница до или после ты хочешь посмотреть, загрузи все в DOM сделай все что нужно и загрузи еще раз!
    Не вижу никаких проблем.