Регулярка для контента

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

Kalmikov1327828

Постоялец
Регистрация
18 Июл 2009
Сообщения
55
Реакции
3
Возможно ли написать регулярку, которая бы находила блоки div, в которых содержится контент, т.е. именно текст, а не ссылки с анкорами, картинки и т.д? При чем эти блоки div должны быть самого низкого уровня вложенности по отношению к другим div блокам, иначе может получиться так, что будет находиться вся начинка сайта.

И если это невозможно для regexp, может есть другие способы?
 
обычно блоки div имеют еще такую отличительную особенность как id или class и тд и тп вот их и используй
 
Нет, в моем случае это не подходит. Слишком много различных id и class. Нужно "опознавать" блоки именно по содержимому
 
к примеру так, для двух вариантов

PHP:
// все div без указанных тегов
preg_match_all('#<div[^>]*>(((?!</?(a|img|input)).)*?)</div>#s',$page,$res);

// все div содержащие только текст
preg_match_all('#<div[^>]*>[^<]+</div>#',$page,$res);
 
pitkina, годится, спасибо. Ты очень приблизил меня к решению задачи.

А не подскажет никто, как нужно подправить 2 вышенаписанные регулярки, чтобы исключить нахождение по ним пустых блоков div, в которых находятся одни пробелы и переводы строк?
 
для первой можно через preg_replace для удаления пустых div
PHP:
preg_match_all('#<div[^>]*>((?!</?(a|img|input)).)*?</div>#s',preg_replace('#<div[^>]*>\s*</div>#','',$page),$res);

и для второй
PHP:
preg_match_all('#<div[^>]*>[^<]*[^<\s]+[^<]*</div>#U',$page,$res);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху