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

Форум PHP

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

 

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

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

тема: Не получается отделить html от php
 
 автор: ChieFSS   (10.11.2007 в 14:32)   письмо автору
 
 

Пробовал парсить html файл с переменными вида {TITLE} , но так и не смог добиться цикличности. Новости не выводятся =(
Подскажите какой-нибудь вариант.
Столько статей уже обчитался...

   
 
 автор: ZeeG   (10.11.2007 в 14:44)   письмо автору
 
   для: ChieFSS   (10.11.2007 в 14:32)
 

.

   
 
 автор: Unkind   (10.11.2007 в 14:45)   письмо автору
 
   для: ChieFSS   (10.11.2007 в 14:32)
 

А как пробовали?
Вообще, нужно сначала запихать в массив те переменные, которые будут подставлятся в каждую итерацию цикла. Например,

<?php
$dynamic_block_vars 
= array();
$dynamic_block_vars = array('var' => 'value1');
$dynamic_block_vars = array('var' => 'value2');
//...
?>


Затем получить, допустим, регулярными выражениями динамический блок и в цикле вывести этот блок с заменными значениями из того же массива столько раз, сколько элементов в массиве $dynamic_block_vars.

Для создания вложенных динамических блоков нужно делать функцию рекурсивной.

   
 
 автор: ChieFSS   (10.11.2007 в 14:49)   письмо автору
 
   для: Unkind   (10.11.2007 в 14:45)
 

Так пробовал. Но новости из БД не получается в цикле вывести.

index.php

require('core.php'); // Подключаем файл с классом
$tpl->get_tpl('template/template.tpl'); //Файл который мы будем парсить

$tpl->set_tpl('{TITLE}','Супер сайт'); //Установка переменной {TITLE}
$tpl->set_tpl('{BGCOLOR}','#F2F2F2'); //Установка переменной { BGCOLOR }
$tpl->set_tpl('{SOMETPLTAGS}','<font color=red>Это текст
обрамленый красным  цветом</font>'); //Установка переменной {SOMETPLTAGS}

$tpl->tpl_parse(); //Парсим
print $tpl->template; //Выводим нашу страничку


core.php

class template
{
    var $vars = array();
    var $template;

    function get_tpl($tpl_name)
    {
        if (empty($tpl_name) || !file_exists($tpl_name)) {
            return false;
        } else {
            $this->template  = file_get_contents($tpl_name);
        }
    }
    function set_tpl($key,$var)
    {
        $this->vars[$key] = $var;
    }
    function tpl_parse()
    {
        foreach($this->vars as $find => $replace)
        {
            $this->template = str_replace($find, $replace, $this->template);
        }
    }
}
$tpl = new template;


template.html

<html>
<head>{TITLE}</head>
<body bgcolor={BGCOLOR}>

{SOMETPLTAGS}

</body>
</html>

   
 
 автор: Unkind   (10.11.2007 в 14:59)   письмо автору
 
   для: ChieFSS   (10.11.2007 в 14:49)
 

Не понятно. А как Вы отличаете переменные для динамического блока (для цикла), и обычные ({TITLE}, например)?

   
 
 автор: ChieFSS   (10.11.2007 в 15:05)   письмо автору
 
   для: Unkind   (10.11.2007 в 14:59)
 

Вот и пытаюсь додуматься как это лучше реализовать

   
 
 автор: Unkind   (10.11.2007 в 15:09)   письмо автору
 
   для: ChieFSS   (10.11.2007 в 15:05)
 

Что тут думать? Выделите по-особому начало и конец блока.
Например, как в phpBB:
<!-- BEGIN block -->
...
<!-- END block -->.

Хотя сам класс там хреновенький. Лучше писать самому.

   
 
 автор: ChieFSS   (10.11.2007 в 15:11)   письмо автору
 
   для: Unkind   (10.11.2007 в 15:09)
 

Щас попробую, а как его потом обрабатывать?

   
 
 автор: Unkind   (10.11.2007 в 15:15)   письмо автору
 
   для: ChieFSS   (10.11.2007 в 15:11)
 

Я уже описал выше. Только паттерн сейчас не напишу, т.к. уже с мобильного сижу.

   
 
 автор: ChieFSS   (10.11.2007 в 15:16)   письмо автору
 
   для: Unkind   (10.11.2007 в 15:15)
 

Ок. спасибо. Буду пробовать

   
 
 автор: mihdan   (11.11.2007 в 13:39)   письмо автору
 
   для: ChieFSS   (10.11.2007 в 14:32)
 

XTemplate, Smarty

   
Rambler's Top100
вверх

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