Регулярка для извлечения текста с html страниц - без нарушения структуры smarty

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

Black#FFFFFF

Постоялец
Регистрация
19 Июл 2007
Сообщения
228
Реакции
172
Народ. Нужна регулярочка - которая "достает" со страницы только текст между тэгами, ту часть его, которая не заключена в {} скобки.
Пример:
Код:
<div>I need some text {if $here == true}{$here}{/if} bellow {$unique}</div>
Так вот достать нужно отдельно
Код:
1.I need some text
2. bellow

Не задев конструкции смарти.
и не трогая html теги.
Получив на выходе "массив" текста в текущем теге страницы, и, в частности, разбитый по значениям - если там есть смарти конструкция внутри.

Суть вопроса - "приехали" неаккуратно сделанные шаблоны к сайту на smarty. Шаблонов много. Суть "неаккуратности" - встречается не вынесенный в конф файлы текст - а на сайте подразумевалась мультиязычность. Вот теперь бы и "выдрать" текст со страниц между тэгами - не задев структуру смарти. А потом "загнать" его обратно - но уже в виде констант с названием цельных строк.

Вот регулярочка "на доставание" текста и пригодилась бы.
Остальное сделаю сам.

На первый взгляд что-то похожее:
PHP:
preg_match_all("'((<[\/\!]*?[^<>]*?>)|(\{[^\{\}]*?\})!?[\s]*)*?([^<>\{\}]*?)+(!?[\s]*(<[^<>]*?>)|((\{[^\{\}]*?\})))*?'Uis",$res,$matches,PREG_PATTERN_ORDER);

но ищу более "удобные" варианты. + еще очень бы не хотелось забирать то - что между <script></script> помещается.
 
вот например:

PHP:
<?

$s='<div>I need some text {if $here == true}{$here}{/if} bellow {$unique}</div>';
$s=strip_tags($s);
$s=preg_split("/(\{[^\}]*\})/",$s,-1,PREG_SPLIT_NO_EMPTY);
print_r($s);

?>

вернет:

Array
(
[0] => I need some text
[1] => bellow
)

что и заказывалось :)

про
+ еще очень бы не хотелось забирать то - что между <script></script> помещается.
попозже подумаю. есть там коекакие заморочки
 
еще очень бы не хотелось забирать то - что между <script></script> помещается.

удаляем все скрипты
PHP:
$text=preg_replace('/<script>.+?<\/script>/is','',$html);

а потом, как сказал Karlasan.....
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху