Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Строка с подставленными переменными [2]
Форумы портала PHP.SU » PHP » Программирование на PHP » Строка с подставленными переменными

Страниц (2): « 1 [2]
 

16. Ch_chov - 25 Июня, 2009 - 17:12:56 - перейти к сообщению
Цитата:
Для чего новая переменная $tplContent = ob_get_clean()

Это строка в которой будет находится весь буфер вывода.
Т.е. $stroka=ob_get_contents(); не понадобится.
(Добавление)
В принципе можешь оставить всё как есть, только flush() замени на ob_end_clean()
17. JustUserR - 25 Июня, 2009 - 23:13:24 - перейти к сообщению
Ну зачем же так извращаться если надо сделат всего насвего одну замену в шаболе (Невадно что он имеется имя .php - его мождно пресдтавлять и как .tpl)
А вы бкуфееризация
18. cat - 26 Июня, 2009 - 09:55:25 - перейти к сообщению
JustUserR пишет:
Ну зачем же так извращаться если надо сделат всего насвего одну замену в шаболе (Невадно что он имеется имя .php - его мождно пресдтавлять и как .tpl)
А вы бкуфееризация

Наверно Вы правы. Но я хоть и понял Вашу идею с регулярными выр., но не знаю как это реализовать в коде. Не хватает опыта работы с ними.
Как записать ЕДИНОЕ выражение для всех переменных POST и ЕДИНОЕ выражение для их значений? И к тому же их надо как-то друг с другом связать. Типа ассоциативного массива. Чтобы потом запихнуть в функцию подстановки!!!
19. JustUserR - 26 Июня, 2009 - 11:33:19 - перейти к сообщению
cat Попробую написать кусок нужного вам кода
PHP:
скопировать код в буфер обмена
  1. $fp=fopen("template.php","r");
  2. $tpl_text=""; while(!feof($fp)) {$tpl_text.=fgets($fp,1024);}
  3. preg_replace("/\$_POST\['?(.*?)'?\]/","\"$_POST['\$1']\"",$tpl_text);
  4.  
По идее данный кусок кода прочтет шаблон и заменит в нем все $_POST-переменные на их значения в кавычках
Если же вам надо код из шаблона выполнять то тогда уже нужен eval()
20. cat - 26 Июня, 2009 - 11:49:53 - перейти к сообщению
JustUserR пишет:
cat Попробую написать кусок нужного вам кода
PHP:
скопировать код в буфер обмена
  1. $fp=fopen("template.php","r");
  2. $tpl_text=""; while(!feof($fp)) {$tpl_text.=fgets($fp,1024);}
  3. preg_replace("/\$_POST\['?(.*?)'?\]/","\"$_POST['\$1']\"",$tpl_text);
  4.  
По идее данный кусок кода прочтет шаблон и заменит в нем все $_POST-переменные на их значения в кавычках
Если же вам надо код из шаблона выполнять то тогда уже нужен eval()


Большое спасибо! Теперь вроде все ясно. Попробую применить.
21. Ch_chov - 27 Июня, 2009 - 08:52:53 - перейти к сообщению
Цитата:
Ну зачем же так извращаться если надо сделат всего насвего одну замену в шаблоне

Имхо делать шаблонизатор на регулярках это и есть извращение.
Особенно если элементы шаблона представлены ввиде php-переменных <?=$_POST[abs1]?>
22. JustUserR - 27 Июня, 2009 - 11:57:48 - перейти к сообщению
Ch_chov Имхо я конечно извиняюсь и вероятно я неправ но всетаки заниматься буферизацией и захватом вывода это жуть тем более что потом этот код может разрастись и парсить его все равно придется ИМХО
23. Ch_chov - 27 Июня, 2009 - 12:14:32 - перейти к сообщению
Почему жуть? И зачем его парсить?
24. JustUserR - 27 Июня, 2009 - 19:10:01 - перейти к сообщению
Ch_chov Веротяно я не понимаю всей могущей сути буферизации но помоему попробую привести аналог для обычный exe-программа - что проще написать шаблонизатор который парсит исходник проги по праваилам или резидента в памятми который будет ловить исполняемый загруженной модуль другой программы и подменить в нем прерывания вывода на копирование в другой кусок памяти
Я бы предпочел первый вариант чем копошения в памяти и исполняемый командах

 

Powered by ExBB FM 1.0 RC1