php. Удалить div или его контент?

Discussion in 'PHP' started by The46Doctor, 16 Jun 2012.

  1. The46Doctor

    The46Doctor New Member

    Joined:
    31 May 2012
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Парсим страницу одного сайта. При этом есть лишний di
    <div class = "test">
    text
    text
    text
    text
    </div>
    Как удалить контент div'a или как удалить полностью сам div?
     
  2. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Используя функцию preg_match получаем содержимое тега <div>. Дальше используя функцию str_replace заменяем в изначальном коде тег <div> вместе с вставленным содержимым(полученным предидущей функцией) на пустоту.
     
  3. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Ну тут не так просто сказать. Много ли таких divов(с таким классом) в коде? Есть ли перед ним динамическое содержимое?потому что если нет можно просто вырезать символы начиная с n и заканчивая </div>,например. больше подробностей,чего стесняться. никто тут ничего не украдет)
     
  4. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Если таких тегов <div> будет больше одного - можно использовать функцию preg_match_all.
    Использование моего способа будет правильнее, ведь даже если и нету динамического контента - на сайте вдруг изменится код - скрипт обновлять не придется.
     
  5. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    а если,например,divoв рандомное количество,а удалить надо только один определённый?вобщем нужно больше подробностей
     
  6. The46Doctor

    The46Doctor New Member

    Joined:
    31 May 2012
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    div один. Сам он всегда статичен. Меняется только его содержимое от которого нужно избавиться.
    preg_replace ('#<div class="tooltip">
    [a-z0-9]*</div>
    #sU', 'good', $rezult);
    Пробовал вот так, но без успеха.

    p.s. Div содержит таблицы, параграф и прочее.
     
  7. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    937
    Likes Received:
    355
    Reputations:
    58
    The46Doctor
    PHP:
    echo preg_replace('#(<div class = "test">).*?(</div>)#s'"$1\r\n$2"$html);
    или весь <div>
    PHP:
    echo preg_replace('#<div class = "test">.*?</div>#s'""$html);
     
    #7 Skofield, 16 Jun 2012
    Last edited: 16 Jun 2012
    1 person likes this.
  8. The46Doctor

    The46Doctor New Member

    Joined:
    31 May 2012
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Skofield, спасибо.