Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс для создания templates, разработка 
:(
    Опции темы
Cepera
Дата 29.1.2003, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



Цитата
действительно... а я уж начал голову ломать над этим
wink.gif вот поэтому все хорошо обдумывать сообща smile.gif



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 29.1.2003, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



Код
function include_file($file_id, $filename) {
if (file_exists($filename)) {
 $include = fread($fp = fopen($filename, 'r'), filesize($filename));
 fclose($fp);
}
else $include = '[Ошибка: Файл "'.$filename.'" не найден, либо не имеется прав на чтение.]';
$tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<include src="'.$filename.'">'), strlen('<include src="'.$filename.'">'));
$this->files[$file_id] = str_replace($tag, $include, $this->files[$file_id]);
}

функция (внутриклассовая) для добавления доп.файлов smile.gif


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 29.1.2003, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



функция будет работать в распарсинном файле при наличии тага <include src="file.html">


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 30.1.2003, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



Код
function parse($file_id) {
$file_ids = explode(',', $file_id);
for (reset($file_ids); $file_id = trim(current($file_ids)); next($file_ids)) {
 while (is_long($pos = strpos(strtolower($this->files[$file_id]), '<include src="'))) {
  $pos += 19;
  $endpos = strpos($this->files[$file_id], '">', $pos);
  $filename = substr($this->files[$file_id], $pos, $endpos-$pos);
  $this->include_file($file_id, $filename);
 }
 if (isset($this->var_names[$file_id]) AND count($this->var_names[$file_id]) > 0) {
  for ($i = 0; $i<count($this->var_names[$file_id]); $i++) {
   $temp_var = $this->var_names[$file_id][$i];
   if (is_long(strpos($this->files[$file_id], $this->start.$temp_var.$this->end))) {
    global $$temp_var;
    $this->files[$file_id] = str_replace($this->start.$temp_var.$this->end, $$temp_var, $this->files[$file_id]);
   }
   elseif (is_long(strpos($this->files[$file_id], $this->start.$temp_var.'()'.$this->end))) {
    global $$temp_var;
    $arguments = array();
    for ($i = 0; $i<count($$temp_var); $i++) $arguments[] = ${$temp_var}[$i];
    if (count($arguments)>0) $arguments = '"'.implode('", "', $arguments).'"';
    else $arguments = '';
    eval('$output = '.$temp_var.'('.$arguments.');');
    $this->files[$file_id] = str_replace($this->start.$temp_var.'()'.$this->end, $output, $this->files[$file_id]);
   }
  }
 }
}
}


собственно сама функция распарсивования хтмля, с учетом тага инклуд


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Sardar
  Дата 31.1.2003, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



А зачем нужна вся эта беда с шаблонами confused.gif ?
Разборка шаблона будет занимать время и к тому же может глючить. Гораздо проще вставлять чистый php код, благо он это позволяет.
Мне еще далеко до высоких материй...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Cepera
Дата 1.2.2003, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



а ты представь структуру из 10, 20, 100 тысяч страниц...


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 2.2.2003, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



следующая часть кода
функция обнаружения и парсинга ИФа
Код
function parse_if($file_id, $array_name) {
$var_names = explode(',', $array_name);
for ($i = 0; $i<count($var_names); $i++){
 $if_code = '';
 $start_pos = strpos(strtolower($this->files[$file_id]), '<if name="'.strtolower($var_names[$i]).'">') + strlen('<if name="'.strtolower($var_names[$i]).'">');
 $end_pos = strpos(strtolower($this->files[$file_id]), '</if name="'.strtolower($var_names[$i]).'">');
 $if_code = substr($this->files[$file_id], $start_pos, $end_pos-$start_pos);
 $start_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<if name="'.strtolower($var_names[$i]).'">'),strlen('<if name="'.strtolower($var_names[$i]).'">'));
 $end_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '</if name="'.strtolower($var_names[$i]).'">'),strlen('</if name="'.strtolower($var_names[$i]).'">'));
 $new_code = '';
 if ($if_code != '') {
  global ${$var_names[$i]};
  if (@${$var_names[$i]}) $new_code = $if_code;
  $this->files[$file_id] = str_replace($start_tag.$if_code.$end_tag, $new_code, $this->files[$file_id]);
 }
}
}



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 2.2.2003, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



Пока наибольшие проблемы с циклом, идеи есть?


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 3.2.2003, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



что-то приуныли, уважаемые...


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 3.2.2003, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



вот вам еще добавка smile.gif smile.gif


функция возвращения полученного файла
Код
function return_file($file_id){
$ret = '';
if (is_long(strpos($file_id, ',')) == TRUE) {
 $file_id = explode(',', $file_id);
 for (reset($file_id); $current = current($file_id); next($file_id)) $ret .= $this->files[trim($current)];
}
else $ret .= $this->files[$file_id];
return $ret;
}



функция парсинга и немедленной распечатки полученного файла
Код
function pprint($file_id, $replacements = ''){
$this->register($file_id, $replacements);
$this->parse($file_id);
$this->print_file($file_id);
}



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 3.2.2003, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



и еще...


функция парсинга и немендленного возвращения полученного контента
Код
function pget($file_id, $replacements = ''){
$this->register($file_id, $replacements);
$this->parse($file_id);
return $this->return_file($file_id);
}



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 3.2.2003, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



больше нужных функций в голову пока не идет...
если есть у кого-либо какие-либо соображения будет очень приятно выслушать


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 3.2.2003, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



функция загрузки, парсинга и немедленноговозвращения полученного результата
Код
function pget_file($filename, $replacements = '') {
for ($file_id=1; isset($this->files[$file_id]); $file_id++);
$this->load_file($file_id, $filename);
return $this->pget($file_id, $replacements);
}



функция загрузки темплейта... с другой идеей
Код
function load_file($file_id, $filename) {
$this->files[$file_id] = fread($fp = fopen($filename, 'r'), filesize($filename));
fclose($fp);
}



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 3.2.2003, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



и вот проблема еще в голову пришла, надо же регистрировать вариаблы...


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
MuToGeN
Дата 4.2.2003, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



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


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1023 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.