|
|
|
| Есть переменная. Она содержит в себе html код страницы с php вставками. Нужно выполнить все php сценарии (там инклуды) и возвратить все содержимое. Как я понимаю, это делается функцией eval() Получается, что нужно найти текст между <?php и ?> и сделать для него eval(). Подскажите пожалуйста, как такое реализовать. | |
|
|
|
|
|
|
|
для: opex
(28.12.2006 в 08:37)
| | Помести результат выполнения в буфер | |
|
|
|
|
|
|
|
для: himic
(28.12.2006 в 11:16)
| |
<?php
// вывод направляем в буффер
ob_start();
//тут идёт твой код
// буфер в переменную
$buffer = ob_get_contents();
// очищение буфера
ob_end_clean();
// вывод страницы вобщем можно деласть с этим что хочешь
echo $buffer;
?>
|
| |
|
|
|
|
|
|
|
для: opex
(28.12.2006 в 08:37)
| | Почти не реально правильно всё сделать - лучше вместо PHP-вставок использовать систему шаблонов. | |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 14:18)
| | Я вот как раз и делаю систему шаблонов. По-моему это так называется. Делаю так: есть файл template.txt. Он содержит хтмл код и php-вставки, например
<?php
include("../head.html");
include("../navigation.html");
?>
|
Также он содержит некоторые переменные величины , например
По сути обыкновенный текстовый файл.
В этой же директории лежат файлы, например index.inc. В них определены переменные. Вот пример такого файла:
<?php
$title='Название';
?>
|
Пользователь запршивает страницу, например index.html. С помощью httaccess файла имя страницы посылается с помощью метода get файлу index.php. Он является обработчиком. Загружает файл template.txt, загружает файл index.inc (file_get_contents) И меняет переменные на значения. Но вот что делать с php инклудами? Вообще напишите, пожалуйста, свое мнение о такой шаблоннной системе. Что исправить, может быть вообще переделать? Буду благодарен. | |
|
|
|
|
|
|
|
для: opex
(28.12.2006 в 14:44)
| | Что-то не очень понятно... приведите пример реального фала template.txt. | |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 15:28)
| | Что то страшно аж
вот к примеру мой индексный файл
<?php
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
session_start();
if(!session_is_registered('lang'))
session_register( 'lang' );
if(!empty($_GET['en']))
$_SESSION['lang']='_en';
if(!empty($_GET['kz']))
$_SESSION['lang']='_kz';
if(!empty($_GET['ru']))
$_SESSION['lang']='';
if(empty($_SESSION['lang']))
$_SESSION['lang']='';
include_once("titus/vars.php");
include_once("titus/lib.php");
connect();
include("tpl/top1.php");
include("titus/start.php");
include("tpl/niz.tpl");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 15:28)
| | Привожу пример. | |
|
|
|
|
|
|
|
для: opex
(29.12.2006 в 11:01)
| | Вы сможете выполнить PHP-вставки, если подключите файл template.txt при помощи конструкции include
<?php
include "template.txt";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.12.2006 в 13:11)
| | Тогда каким образом я заменю переменные на значения? Ведь include сразу выведет шаблон в браузер. | |
|
|
|
|
|
|
|
для: opex
(29.12.2006 в 14:38)
| | Можно поступить следующим образом
<?php
// вывод направляем в буффер
ob_start();
include "template.txt";
// буфер в переменную
$buffer = ob_get_contents();
// очищение буфера
ob_end_clean();
// Заменяем переменные на значения
// ...
// вывод страницы
echo $buffer;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.12.2006 в 14:50)
| | Уже пробовал. вывод идет сразу в браузер, а переменная $buffer содержит только половину этого вывода. | |
|
|
|
|
|
|
|
для: opex
(29.12.2006 в 16:04)
| | не проще ли smarty взять? | |
|
|
|
|
|
|
|
для: isset
(29.12.2006 в 18:14)
| | Зачем мне такой монстр? | |
|
|
|
|
|
|
|
для: opex
(29.12.2006 в 16:04)
| | Хм... странно, не должно быть такого... | |
|
|
|