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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Теги внутри подключаемых HTML файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Теги внутри подключаемых HTML файлов, прошу прощения если такая тема уже существует, я не знаю как называется это
stazot
Отправлено: 17 Июня, 2014 - 15:22:52
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Всем доброго времени суток! Вопрос в том как создать спец теги например видел в движке DLE

{title}-выводит заголовок заголовок(и т.п.)

или такие ссылочные блоки как

{Link}текст{/Link}

и условные

[usergroup=10]
определенный текст
[/usergroup]

[usergroup=0]
какой то другой текст
[/usergroup]

ни как не соображу, подсобите пожалуйста!
ниже пример:

CODE (html):
скопировать код в буфер обмена
  1. [group=1]
  2.         <div id="avatar">
  3.                 <img src="{foto}">
  4.         </div>
  5.         <div id="userName">
  6.                 {login}
  7.         </div>
  8.         <div id ="addnews" class="buttons"><a href="{addnews-link}">Добавить новость</a></div>
  9.         <div  class="buttons"><a href="{admin-link}">Админ-панель</a></div>
  10.         <div  id ="logout" class="buttons"><a href="{logout-link}">Выйти</a></div>
  11.  
  12.        
  13.  
  14.  
  15. [/group]
  16. [group=2]
  17.         <div id="avatar">
  18.                 <img src="{foto}">
  19.         </div>
  20.         <div id="userName">
  21.                 {login}
  22.         </div>
  23.         <div id ="addnews" class="buttonForvote"><a href="{addnews-link}">Добавить новость</a></div>
  24.         <div  class="buttonForvote"><a href="{admin-link}">Админ-панель</a></div>
  25.         <div  id ="logout" class="buttons"><a href="{logout-link}">Выйти</a></div>
  26. [/group]


как видно ни грамма php тут нет.
 
 Top
Мелкий Супермодератор
Отправлено: 17 Июня, 2014 - 15:27:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Основной вопрос: зачем?


-----
PostgreSQL DBA
 
 Top
stazot
Отправлено: 17 Июня, 2014 - 15:35:03
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




ну во первых есть желание научиться, во вторых удобно код отдельно верстка отдельно!
(Добавление)
Мелкий пишет:
Основной вопрос: зачем?

Даже на этом форуме они используются!
 
 Top
DelphinPRO
Отправлено: 17 Июня, 2014 - 16:04:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Sail
Отправлено: 17 Июня, 2014 - 16:11:25
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




stazot пишет:
как видно ни грамма php тут нет

Собственно, PHP должен обработать этот файл и выдать "на-гора" легко усваиваемый браузером результат...
 
 Top
stazot
Отправлено: 17 Июня, 2014 - 20:31:44
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Кто то сделал молодец, но я хочу сам научиться! мне это интересно!
(Добавление)
DelphinPRO пишет:
Мелкий, вероятно, имел ввиду, зачем городить свой шаблонизатор, когда можно просто взять готовый, отлаженный и с кучей возможностей?

Хочется самому! это пока только для себя!
 
 Top
DelphinPRO
Отправлено: 18 Июня, 2014 - 00:41:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




file_get_contents - чтобы прочитать файл в строку.
Далее str_replace (или preg_replace), чтобы заменить переменные типа {login}
И preg_replace_callback для обработки блоков [group]...[/group]

Учись Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
stazot
Отправлено: 18 Июня, 2014 - 11:39:14
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Прошу прощения прочитал про
DelphinPRO пишет:
preg_replace_callback для обработки блоков [group]...[/group]
но ни где толком не объясняют как это сделать, можно пример не большой с комментариями?
 
 Top
esterio
Отправлено: 18 Июня, 2014 - 11:51:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




stazot пишет:
Даже на этом форуме они используются!

на этом форуме не шаблонизатор а ББ-тэгы.

stazot пишет:
но ни где толком не объясняют как это сделать, можно пример не большой с комментариями?

http://ua2.php.net/manual/ru/fun...ace-callback.php

content.html
CODE (html):
скопировать код в буфер обмена
  1. <h3>Hello!.</h3><p>You login is <b>{login}</b></p>


PHP:
скопировать код в буфер обмена
  1. function replaceContent($matches)
  2. {
  3.         global $data;
  4.        
  5.         return isset($data[$matches[1]]) ? $data[$matches[1]] : $matches[0];
  6. }
  7.  
  8. $content = file_get_contents('content.html');
  9. $data = array(
  10.         'login' => 'php.su'
  11. );
  12.  
  13. $result = preg_replace_callback('/\{(.+?)\}/', 'replaceContent', $content);
  14.  
  15. echo $result;

(Отредактировано автором: 18 Июня, 2014 - 11:52:54)

 
 Top
DelphinPRO
Отправлено: 18 Июня, 2014 - 12:53:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




esterio пишет:
global $data;

ну что же вы новичков плохому учите Улыбка


PHP:
скопировать код в буфер обмена
  1. $content = file_get_contents('content.html');
  2.  
  3. $data = array(
  4.         'login' => 'php.su'
  5. );
  6.  
  7. $result = preg_replace_callback('/\{(.+?)\}/',
  8.     function ($matches) use $data
  9.     {
  10.         return isset($data[$matches[1]]) ? $data[$matches[1]] : $matches[0];
  11.     }, $content);


а если мы используем объектный подход (так даже удобнее)

PHP:
скопировать код в буфер обмена
  1. private function _parse($content)
  2. {
  3.     $content = preg_replace_callback(self::PATTERN_VAR, array($this, '_callback_vars'), $content);
  4.     return $content;
  5. }
  6. private function _callback_vars($m)
  7. {
  8.     $varName = $m[1];
  9.  
  10.     if (isset( $this->_rgData[$varName] )) {
  11.         return $this->_rgData[$varName];
  12.     }
  13.  
  14.     return $m[0];
  15.     // return '';
  16. }


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
stazot
Отправлено: 01 Июля, 2014 - 08:38:05
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Спасибо всем

(Отредактировано автором: 09 Июля, 2014 - 10:06:06)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB