Удаление строк

Тема в разделе "Регулярные выражения", создана пользователем Lucid_Mind, 28 окт 2009.

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

    Lucid_Mind Постоялец

    Регистр.:
    18 янв 2009
    Сообщения:
    72
    Симпатии:
    34
    Здравствуйте!
    В HTML документе есть выражения, типа:
    ---
    AHALAI<span style='display:none'>MAHALAI</span>
    ---
    Может быть так:
    ---
    AHALAI<span
    style='display:none'>MAHALAI</span>
    ---
    //
    Нужно удалить всё, кроме AHALAIMAHALAI.
    Подскажите регулярку для Replace.

    Заранее спасибо. :)
     
  2. nittis

    nittis Постоялец

    Регистр.:
    21 апр 2009
    Сообщения:
    68
    Симпатии:
    29
    вот так

    #</?span[^>]+>#i

    или так

    #</?span.+>#sUi

    меняем это на пустую строку
     
    Lucid_Mind нравится это.
  3. Lucid_Mind

    Lucid_Mind Постоялец

    Регистр.:
    18 янв 2009
    Сообщения:
    72
    Симпатии:
    34
    А чем отличаются эти варианты?
     
  4. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
    Это о буквах "sUi" после "#".

    Только
    Код:
    #</?span[^>]*>#i
    или так
    Код:
    #</?span.*>#sUi
    (+ заменил на *) иначе </span> не сотрет.

    Хотя если затирать нужно именно
    Код:
    <span style='display:none'>
    (защита от воровства контента? ;) ), тогда лучше так:
    PHP:
    <?
    $text 'AHALAI<span
    style=\'display:none\'>MAHALAI</span>'
    ;
    echo 
    preg_replace('#<span[^>]+style=[\'"]display:none[\'"][^>]*>([^<]*)</span>#i''$1'$text);
    ?>
     
    nittis нравится это.
  5. Lucid_Mind

    Lucid_Mind Постоялец

    Регистр.:
    18 янв 2009
    Сообщения:
    72
    Симпатии:
    34
    Нет, это не защита от воровства контента. Это так Excel сохраняет в виде HTML. :)
     
  6. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Экспорт в html средствами MS оффиса приравнивают к порнографии, попробуй опеноффисом, думаю отпадут много лишних телодвижений.
     
  7. nittis

    nittis Постоялец

    Регистр.:
    21 апр 2009
    Сообщения:
    68
    Симпатии:
    29
    satih
    За звездчки спасибо, естественно правильный вариант с ними. Проглядел.

    Lucid_Mind
    По функциональности отличий нет, можно выбрать синтаксис который больше нравится или выглядит понятнее.

    О спецификаторах регулярных выражений многие почему-то забывают, еше ни в одном примере не видел использование 'U', в то время, как это отличное лекарство от жадности.
     
  8. Lucid_Mind

    Lucid_Mind Постоялец

    Регистр.:
    18 янв 2009
    Сообщения:
    72
    Симпатии:
    34
    2Satih: Просто нужно, чтобы Excel(народ к нему привык) был встроен в одну из форм моей программы. Пользователь в этом Excel'е как хочет редактирует форму и сохраняет её в виде html. Потом сайт на ASP.NET - в сформированную пользователем таблицу вставляет данные из базы данных.
    Поэтому приходится использовать Excel, а так - яб использовал WYSIWYG.

    2nittis: Что значит лекарство от жадности? Лекарство от жадности до системных ресурсов?
     
  9. nittis

    nittis Постоялец

    Регистр.:
    21 апр 2009
    Сообщения:
    68
    Симпатии:
    29
    Нет, это термин относится к алгоритму поиска. По умолчанию поиск регулярных выражений - это "жадный" алгоритм, то есть ищет максимальное вхождение паттерна. Спецификатор 'U' делает алгоритм "нежадным" и заставляет искать минимальное вхождение

    Например есть строка

    <br><br><br>1234567890<br>

    тогда поиск по выражению #<.*># найдет всю строку целиком

    а по выражению #<.*>#U будет найдено 4 строки '<br>', а цифры естественно выбросит. Этот паттерн можно использовать для вырезания всех тегов со страницы с помощью preg_replace
     
Статус темы:
Закрыта.