Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: eval
 
 автор: opex   (28.12.2006 в 08:37)   письмо автору
 
 

Есть переменная. Она содержит в себе html код страницы с php вставками. Нужно выполнить все php сценарии (там инклуды) и возвратить все содержимое. Как я понимаю, это делается функцией eval() Получается, что нужно найти текст между <?php и ?> и сделать для него eval(). Подскажите пожалуйста, как такое реализовать.

   
 
 автор: himic   (28.12.2006 в 11:16)   письмо автору
 
   для: opex   (28.12.2006 в 08:37)
 

Помести результат выполнения в буфер

   
 
 автор: himic   (28.12.2006 в 11:31)   письмо автору
 
   для: himic   (28.12.2006 в 11:16)
 


<?php 
  
// вывод направляем в буффер 
  
ob_start(); 
//тут идёт твой код
  // буфер в переменную 
  
$buffer ob_get_contents(); 
  
// очищение буфера
  
ob_end_clean(); 
  
// вывод страницы вобщем можно деласть с этим что хочешь
  
echo $buffer
?>

   
 
 автор: cheops   (28.12.2006 в 14:18)   письмо автору
 
   для: opex   (28.12.2006 в 08:37)
 

Почти не реально правильно всё сделать - лучше вместо PHP-вставок использовать систему шаблонов.

   
 
 автор: opex   (28.12.2006 в 14:44)   письмо автору
 
   для: cheops   (28.12.2006 в 14:18)
 

Я вот как раз и делаю систему шаблонов. По-моему это так называется. Делаю так: есть файл template.txt. Он содержит хтмл код и php-вставки, например
<?php
include("../head.html");
include(
"../navigation.html");
?>

Также он содержит некоторые переменные величины , например
&title&

По сути обыкновенный текстовый файл.
В этой же директории лежат файлы, например index.inc. В них определены переменные. Вот пример такого файла:

<?php
$title
='Название';
?>

Пользователь запршивает страницу, например index.html. С помощью httaccess файла имя страницы посылается с помощью метода get файлу index.php. Он является обработчиком. Загружает файл template.txt, загружает файл index.inc (file_get_contents) И меняет переменные на значения. Но вот что делать с php инклудами? Вообще напишите, пожалуйста, свое мнение о такой шаблоннной системе. Что исправить, может быть вообще переделать? Буду благодарен.

   
 
 автор: cheops   (28.12.2006 в 15:28)   письмо автору
 
   для: opex   (28.12.2006 в 14:44)
 

Что-то не очень понятно... приведите пример реального фала template.txt.

   
 
 автор: himic   (28.12.2006 в 16:25)   письмо автору
 
   для: 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");
 
?> 

   
 
 автор: opex   (29.12.2006 в 11:01)   письмо автору
 
   для: cheops   (28.12.2006 в 15:28)
 

Привожу пример.

   
 
 автор: cheops   (29.12.2006 в 13:11)   письмо автору
 
   для: opex   (29.12.2006 в 11:01)
 

Вы сможете выполнить PHP-вставки, если подключите файл template.txt при помощи конструкции include
<?php
  
include "template.txt";
?>

   
 
 автор: opex   (29.12.2006 в 14:38)   письмо автору
 
   для: cheops   (29.12.2006 в 13:11)
 

Тогда каким образом я заменю переменные на значения? Ведь include сразу выведет шаблон в браузер.

   
 
 автор: cheops   (29.12.2006 в 14:50)   письмо автору
 
   для: opex   (29.12.2006 в 14:38)
 

Можно поступить следующим образом
<?php  
  
// вывод направляем в буффер  
  
ob_start();  

  include 
"template.txt"

  
// буфер в переменную  
  
$buffer ob_get_contents();  
  
// очищение буфера 
  
ob_end_clean();  
  
// Заменяем переменные на значения
  // ...
  // вывод страницы
  
echo $buffer;  
?>

   
 
 автор: opex   (29.12.2006 в 16:04)   письмо автору
 
   для: cheops   (29.12.2006 в 14:50)
 

Уже пробовал. вывод идет сразу в браузер, а переменная $buffer содержит только половину этого вывода.

   
 
 автор: isset   (29.12.2006 в 18:14)   письмо автору
 
   для: opex   (29.12.2006 в 16:04)
 

не проще ли smarty взять?

   
 
 автор: opex   (29.12.2006 в 19:06)   письмо автору
 
   для: isset   (29.12.2006 в 18:14)
 

Зачем мне такой монстр?

   
 
 автор: cheops   (29.12.2006 в 22:20)   письмо автору
 
   для: opex   (29.12.2006 в 16:04)
 

Хм... странно, не должно быть такого...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования