Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: теги div со всем содержимым, если между ними нет </td>
 
 автор: f111   (02.07.2011 в 04:35)   письмо автору
 
 

есть html код

<td><div>1</a></td>
<td><div>2</div></td>

пытаюсь собрать регулярку которая вытащить теги div со всем содержимым, если между ними нет </td>, пробовал так
|<div>.*?(?!</td>)</div>|si
, но не работает как хочется.
подскажите как исправить.

  Ответить  
 
 автор: Deed   (02.07.2011 в 11:09)   письмо автору
 
   для: f111   (02.07.2011 в 04:35)
 

/<div>[^(<\/td>)]<\/div>/is

  Ответить  
 
 автор: f111   (02.07.2011 в 11:25)   письмо автору
 
   для: Deed   (02.07.2011 в 11:09)
 

а если внутри блочного элемента кроме текста есть и теги?

<td><div>1</a></td>
<td><div>2<a>5</a></div></td>

как быть?
.*? после квадратных скобок не помогает

  Ответить  
 
 автор: .....   (02.07.2011 в 23:26)
 
   для: Deed   (02.07.2011 в 11:09)
 

:) проверили ?

>......
(?!</?td) проверяет есть.ли далее </?td
Проверка при каждой итерации .* примерно так
(?:(?!</?td\b).)*

чуть быстрее может работать что.то типа более жадного
(?>(?!</?td\b).[^<]*)*
, но тут возникает диллема ;) оставить.ли просто (?:...)*? Или все.же жадное (?>...)* добавив что.то вроде (?!</?(?:div|td)\b)

, непроверял :)

  Ответить  
 
 автор: f111   (02.07.2011 в 23:41)   письмо автору
 
   для: .....   (02.07.2011 в 23:26)
 

.

  Ответить  
 
 автор: f111   (03.07.2011 в 00:44)   письмо автору
 
   для: .....   (02.07.2011 в 23:26)
 

последний вариант (?!</?(?:div|td)\b) у меня не заработал, а остальные два как надо, и второй вариант как вы и сказали быстрее....вот бы ещё врубить что там и как там происходит.

спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования