URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7279
[ Назад ]

Исходное сообщение
"регулярные выражения и html"

Отправлено mef_ , 25-Июн-11 22:04 
Никак не могу решить задачу.
Нужно вырезать из html строку в по теги обрамляющие ее по известному слову.
Например.

<h1> Конфеты </h1>
<h1>Свежее пиво и напитки <b>хо<red>р</red>ошо</b> освежают.</h1>
<h1> Цветы sdfsd dsf</h1>
<dsfgdf>ыва авп <b>sdfsd</db>sdfsd dsf</dfs>

По слову пиво вырезается строка от тега до тега, т.е.:
Свежее пиво и напитки хорошо освежают.

Уже не знаю с какой стороны подойти.

Содержание

Сообщения в этом обсуждении
"регулярные выражения и html"
Отправлено Aquarius , 25-Июн-11 22:44 
>[оверквотинг удален]
> Например.
>
 
> <h1> Конфеты </h1>
> <h1>Свежее пиво и напитки <b>хо<red>р</red>ошо</b> освежают.</h1>
> <h1> Цветы sdfsd dsf</h1>
> <dsfgdf>ыва авп <b>sdfsd</db>sdfsd dsf</dfs>
>

> По слову пиво вырезается строка от тега до тега, т.е.:
>
Свежее пиво и напитки хорошо освежают.

> Уже не знаю с какой стороны подойти.

а где само регулярное выражение?
P.S. кстати говоря, что именно не так, тоже непонятно


"регулярные выражения и html"
Отправлено mef_ , 25-Июн-11 22:59 
> а где само регулярное выражение?
> P.S. кстати говоря, что именно не так, тоже непонятно

Мне не понятно как написать такое выражение. Все что смог это: (?<=(..>)).+?пиво.+?(?=/\1)
Но оно выдаст строчку "Свежее пиво и напитки <b>хо<red>р</red>ошо</b> освежают." с тегами внутри, да и в некоторых случая работать будет некорректно.


"регулярные выражения и html"
Отправлено mef_ , 25-Июн-11 23:28 
будет плохо работать, если кто-то добавит дополнительные теги, например так:
<h1> Конфеты </h1>  <h1>Свежее пиво и напитки <b>хо<red>р</red>ошо</b> ос<h1>в</h1>ежают.</h1>
И совсем не будет работать, если заменить h1 на div.

"регулярные выражения и html"
Отправлено Aquarius , 26-Июн-11 11:49 
>> а где само регулярное выражение?
>> P.S. кстати говоря, что именно не так, тоже непонятно
> Мне не понятно как написать такое выражение. Все что смог это: (?<=(..>)).+?пиво.+?(?=/\1)
> Но оно выдаст строчку "Свежее пиво и напитки <b>хо<red>р</red>ошо</b> освежают." с тегами
> внутри, да и в некоторых случая работать будет некорректно.

а мне непонятно, чего вы хотите


"регулярные выражения и html"
Отправлено Феликс Жопорезку , 26-Июн-11 14:19 
Ищите строку где есть "пиво"
мочите в ней все теги <[a-zA-Z0-9/ ]+>

"регулярные выражения и html"
Отправлено Феликс Жопорезку , 26-Июн-11 14:30 
будет плохо работать, если кто-то добавит дополнительные теги, например так:
<h1> Конфеты </h1>  <h1>Свежее пиво и напитки <b>хо<red>р</red>ошо</b> ос<h1>в</h1>ежают.</h1>

делаете explode (http://ru.php.net/manual/en/function.explode.php) по h1 и  обрабатываете каждую строку отдельно


"регулярные выражения и html"
Отправлено mef_ , 27-Июн-11 12:54 
> будет плохо работать, если кто-то добавит дополнительные теги, например так:
> <h1> Конфеты </h1>  <h1>Свежее пиво и напитки <b>хо<red>р</red>ошо</b> ос<h1>в</h1>ежают.</h1>
> делаете explode (http://ru.php.net/manual/en/function.explode.php) по h1 и  обрабатываете
> каждую строку отдельно

спасибо, попробую


"регулярные выражения и html"
Отправлено Pahanivo , 27-Июн-11 07:43 
> Нужно вырезать из html строку в по теги обрамляющие ее по известному

сори, но никуя не понятно. "в по" - че к чему ...


"регулярные выражения и html"
Отправлено mef_ , 28-Июн-11 12:37 
>> Нужно вырезать из html строку в по теги обрамляющие ее по известному
> сори, но никуя не понятно. "в по" - че к чему ...

не знаю как проще объяснить


"регулярные выражения и html"
Отправлено Pahanivo , 28-Июн-11 18:28 
> не знаю как проще объяснить

видимо когда сам сформулируешь, сам и поймешь как решить ...


"регулярные выражения и html"
Отправлено DeadLoco , 30-Июн-11 13:27 
> Уже не знаю с какой стороны подойти.

Со стороны бекреференсов. Регексп
     <(h1|h2|div|td|p).*?(пиво|конфеты|цветы).*?</\1>
даст строку, в которой достаточно будет выкусить все теги.