Как выдернуть текст в переменную, который написан между 2 тегами

deseper

Новичок
C_TIGER, во спасибо. Теперь понятно как без извлечения в переменную это делается..
Т.Е. <Comment> меняется на
PHP:
<?for($i=0,$c=count($comments);$i<$c;$i++){?>
, а </Comment> меняется на
PHP:
<?}?>
Теперь понятно, как без выдергивания минишаблона в переменную это сделать.

*****, да нет, нужна была именно теория, не мог догадаться что можно так хитро на циклы подменить свой синтаксис шаблона. Если бы мне код нужно было написать - то я бы его за 5 минут написал бы, если бы знал как работает это в теории и мне не было бы смысла мучать вас вопросами.

baev, образец шаблона с БлогТура взял, писал же. Но я этот образец урезал, точнее его часть взял и показал как там шаблоны пишутся. Полный код разумеется никто читать бы не стал.

Вот теперь понятно, как сделана шаблонизация на БлогТуре...
Спасибо за помощь, друзья! :)

-~{}~ 06.02.10 16:45:

Хотя по идее всеравно инклюдировать главный шаблон придется, а в переменной его хранить по идее не получится, т.к. php не хтмл. Хотя не знаю как обьяснить, но что мне было нужно - я узнал.
Ещё раз спасибо!
 

Фанат

oncle terrible
Команда форума
охохонюшки... дети - цветы жизни.
Этот тигр веб-программирования написал тебе, как можно было бы сделать вместо написания <Comment> </Comment>
но если уж написано, то никто там ничего потом не заменяет.
 

baev

‹°°¬•
Команда форума
baev, образец шаблона с БлогТура взял, писал же.
— я же читать умею, как Вы думаете?
Откуда именно с БлогТура взяли?
Нет ли там инструкции по использованию шаблонов?

Но я этот образец урезал, точнее его часть взял и показал как там шаблоны пишутся. Полный код разумеется никто читать бы не стал.
— выложите полный код сюда: http://phpclub.ru/paste/
 

deseper

Новичок
baev, там при регистрации можно шаблон выбрать, а потом зайти и поменять его. Весь блог на одном шаблоне строится. Т.е. в главном шаблоне шаблон записи, шаблон коммента ну и т.д.
Инструкция есть, но она наврятли понадобится, там всё очень просто. Полный код сейчас выложу и ссылку кину сюда... :)
 

Фанат

oncle terrible
Команда форума
Кстати, C_TIGER
Описываемый случай - как раз тот, когда приведенная тобой конструкция не сработает
 

deseper

Новичок
baev, вот темлэйт - http://phpclub.ru/paste/2398
вот справка - http://blogtur.com/manager/support_guide.php
Но для того, чтобы читать её - нужно зарегиться. Я тебе в ЛС свой логин с пассом скину, чтобы время те зря не тратить. Тока плиз на моем блоге темплейт не поменяй случайно, если будешь смотреть как именно мой темплейт устроен. А на блог я забил, совершенно другими вещами сейчас занимаюсь, держу его просто для того, что жалко удалять :) Темболее это как работа, которую можно показать (дизайн и вертска мои)
 

C_TIGER

Новичок
Фaнат
а можно и заменить, потом отевалить
почему не сработает? может я не вчитался просто...
 

deseper

Новичок
Ф@нат, да я че-то протупил... Так сделать не получится.
Ты меня спрашивал зачем запихивать в переменную шаблон... Расскажи теорию, как сделать без запихивания в шаблон-то?
Или другую теорию, как по-твоему устроено это на БлогТуре. Ведь хорошая шаблонизация... Нужно разобраться как она работает :)

-~{}~ 06.02.10 17:48:

C_TIGER, я ссылку на полный шаблон привел и чуть выше часть шаблона приводил, можешь глянуть как там сделано... Я вот весь день голову ломаю :)
 

C_TIGER

Новичок
ТС стоит почитать по шаблониазторы
и про регулярные выражения

preg_match("#<TagOpen>(.+?)<\/TagClose>#is",$text,$result);
 

deseper

Новичок
оффтопик: эх... Если на PHP так сделать нельзя, то придется свой язык программирования писать :D

-~{}~ 06.02.10 17:54:

C_TIGER, да я просто регуляркой не хочу, тормозно будет. Так то я уже знаю как выдернуть текст между тегами в переменную... Но похоже Ф@нат другой способ знает, только молчит :)
А вот про шаблонизаторы стоит почитать, т.к. ниразу про них не читал...
 

C_TIGER

Новичок
так тебе в переменную шаблон надо? бгг зачем?
читай про строковые функции (stripos() substr())
 

baev

‹°°¬•
Команда форума
Посмотрел.
Да, там именно так, как Вы писали: содержимое тега может в цикле выводиться.

Но я не думаю, что там устроено так, как Вы предполагаете.
Скорее всего, при парсинге всего шаблона происходит подстановка всех значений переменных, в том числе и комментов.
Парсер последовательно весь шаблон читает, доходит до определённого тега и повторяет в цикле вывод содержимого между тегами (с подстановкой значений) до тех пор пока не закончатся элементы в массиве.
 

Фанат

oncle terrible
Команда форума
C_TIGER
дада, отъевалить. то, что юзер туда написал.
прекрасная рекомендация. хоть сейчас в учебник.

deseper
***** тебе уже 10 раз сказал. Умеешь? Делай. Хватит стоять мечтать.
 

C_TIGER

Новичок
Фaнат
юзер в шаблон чё-то пишет? я такого и представить не могу =)

если так, мог бы сказать что натив там нехорошо вообще =)

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

Фанат

oncle terrible
Команда форума
представлять не надо
надо топик читать, в который пишешь. об этом и речь, что не подходит вообще.
описанный здесь способ подходит гораздо лучше, чем XSLT
 

C_TIGER

Новичок
Фaнат
я читал сабж + 3 поста. потому что влез в дисскурсию в середине и первое что пришло в голову автор не знает о натив php.
>>описанный здесь способ подходит гораздо лучше, чем XSLT
согласен частично
 

deseper

Новичок
C_TIGER
про то как в переменную читать это я в начале топика разобрался, но всеравно спасибо, что хотябы попытался помочь!

Скорее всего, при парсинге всего шаблона происходит подстановка всех значений переменных, в том числе и комментов.
Парсер последовательно весь шаблон читает, доходит до определённого тега и повторяет в цикле вывод содержимого между тегами (с подстановкой значений) до тех пор пока не закончатся элементы в массиве.
[/qoute]

Вот спасибо за теорию! Лучше варианта не найду.

Но есть пара вопросов по практической части:
1). Как парсить шаблон последовательно?

2).Как сделать так, чтобы парсер, когда дойдет до определенного тега, вывел в цикле то, что между этими тегами?
А если комментов 0, то парсер вообще должен не выводить то, что идет между этими тегами...

P.S. Если принцип такой работы где-то разобран, то киньте ссылкой в меня :)
 
Сверху