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

Статус
В этой теме нельзя размещать новые ответы.

Lucid_Mind

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

Заранее спасибо. :)
 
вот так

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

или так

#</?span.+>#sUi

меняем это на пустую строку
 
А чем отличаются эти варианты?
 

Это о буквах "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);
?>
 
Нет, это не защита от воровства контента. Это так Excel сохраняет в виде HTML. :)
 
Экспорт в html средствами MS оффиса приравнивают к порнографии, попробуй опеноффисом, думаю отпадут много лишних телодвижений.
 
satih
За звездчки спасибо, естественно правильный вариант с ними. Проглядел.

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

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

2nittis: Что значит лекарство от жадности? Лекарство от жадности до системных ресурсов?
 
Нет, это термин относится к алгоритму поиска. По умолчанию поиск регулярных выражений - это "жадный" алгоритм, то есть ищет максимальное вхождение паттерна. Спецификатор 'U' делает алгоритм "нежадным" и заставляет искать минимальное вхождение

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

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

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

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