Обработка блоков

Asafchik

Новичок
Обработка блоков

Есть блоки вида:
PHP:
[block]
информация
[/block]
При определённых условиях нужно менять содержимое внутри блоков ну и убирать из вывода эти тэги блоков.
В какую сторону хотя-бы копать? Как я понимаю - regexp, но я в нём нуль =(
Если кто-нибудь поможет - буду крайне благодарен =)
 

Asafchik

Новичок
У меня маленький самописный класс для работы с tpl.
Весь вывод у меня в файле main.tpl
Последняя функция которой мне нехватает - как раз обработка блоков.
В .tpl файле идёт:
[block]
Некая информация для данного случая
[/block]
Меняются или убираются они всегда.
Вот только функция для этого нужна.
Шаг первый - обработка между двумя тэгами блока
Шаг второй - отброс из вывода тэгов блока
 

Alexandre

PHPПенсионер
Как я понимаю - regexp, но я в нём нуль =(
всегда есть альтернатива: strpos(), substr(), str_replace()

иногда быстрее написать пять строчек пхп кода, чем отлаживать регулярное выражение.
 

Asafchik

Новичок
Автор оригинала: Vin-Diesel
юзай smarty
Зачем мне использовать смарти если я полностью свой класс написал?
Смарти весит неплохо так и тормозит.
Мой работает моментально.
Это последняя ф-ция которой там нехватает.

-~{}~ 12.07.07 20:11:

Кое-как составил regexp которое ищет блок...
Как получить то, что ВНУТРИ блока?
Код:
preg_match("'\\[$block\\].*?\\[/$block\\]'si", $tpl->file, $match);
-~{}~ 12.07.07 20:12:

Всё, разобрался.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Asafchik
так и тормозит.
Мой работает моментально.
Да ну! :)

Кое-как составил regexp которое ищет блок...
Всё, разобрался.
Ваш регуляруляр
preg_match("'\\[$block\\].*?\\[/$block\\]'si", $tpl->file, $match);
1. Не получит то, что _внутри_ блока.
2. Будет иметь 2 Нотиса.
 

Asafchik

Новичок
Не имеет ниодного нотиса и великолепно работает.

-~{}~ 12.07.07 20:32:

И если прочитать внимательно что я писал, то я написал что составил регулярку которая ИЩЕТ БЛОК!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Asafchik
Что Вы покурили, что используете как ограничитель символ ' ?
 

Asafchik

Новичок
Я ничего не курил, выражения пожалуйста выбирайте.
Моё рег выражение прекрасно работает.
Код:
	function hide_block($block)
				{
					$this->file = preg_replace("'\\[$block\\].*?\\[/$block\\]'si",'', $this->file);
				}
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Asafchik
И если прочитать внимательно что я писал, то я написал что составил регулярку которая ИЩЕТ БЛОК!
Простите, а...
Как получить то, что ВНУТРИ блока?
не Ваш вопрос случайно?

Не имеет ниодного нотиса и великолепно работает.
Видишь суслика? Нет. И я не вижу. А он есть.
(с) ДМБ
error_reporting(E_ALL)
и будет Вам нотис.

-~{}~ 12.07.07 19:44:

Я ничего не курил, выражения пожалуйста выбирайте.
Моё рег выражение прекрасно работает.
Потом сами путаться будете.

Курить нужно мануал.
 

Asafchik

Новичок
Код:
Notice: ob_end_flush() [ref.outcontrol]: failed to delete and flush buffer. No buffer to delete or flush. in D:\wamp\www\muonline\index.php on line 146
Единственный нотис, который мне выдаётся.
То, что между тэгами я беру отбрасывая тэги.

-~{}~ 12.07.07 21:03:

И то потому, что забыл сделать
Код:
ob_start();
 
Сверху