Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > текст длиной 120 символов в котором нет тега DIV и


Автор: spbnvb 12.12.2014, 13:21
Помогите создать регулярное выражение такого смысла
В тексте не должно быть тега DIV или TD
Что то не могу сообразить, извините, если туплю, прошу подсказать.

Вобщем даже не так. Анализируется html
может быть такая конструкция, что внутри дива есть ещё два дива, и т.д. Нужно взять самый нижний, то есть самый вложенный. В котором уже нет других таблиц или дивов.

это с помощью регулярки вообще реально сделать?

Автор: Vardoulacha 12.12.2014, 13:27
Нужно замену произвести? Или просто поиск? Покажите пример строки и что с ней нужно сделать, первая строка исходная, вторая результат что должно получится, тогда проще будет понять что делать.

Автор: spbnvb 12.12.2014, 13:38
Отредактировал вопрос. И вот привожу пример.

Код

<html><body>трутрутру1 лваоывдывола<div class="cls">Я внутри </div><table><tr><td>я текст, который находится<div class="cls">Я внутри 
дива и я большой текст более 20 символов</div> внутри td тега</td></tr><tr><td>Я маленький</td></tr><tr><td>z vtk</td></tr></table></body></html>


Должен найтись текст ($3) Я внутри дива и я большой текст более 20 символов так как в нем нет других дивов или таблиц и он соответствует нужному размеру.

регулярку сварганил такую вот
<html.*<(body)>.*?<(td|div).*?>(.{20,120}?)<\/\2>.*?<\/\1>.*</html>

она в большинстве случаев работает, но я вот в лабораторных условиях придумал текст, который вполне может случиться и находит в $3 вот что: 
Код

Я внутри </div><table><tr><td>я текст, который находится<div class="cls">Я внутри дива и я большой текст более 20 символов


Автор: Aliance 12.12.2014, 13:49
Может поможет замена (.{20,120}?) на отрицание, что-то типа ([^\<]?)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)