Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965

Подстановка переменных в шаблоне

16.12.2013, 19:24. Показов 7484. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Искал ответ, но не смог найти...
В общем что бы вывести текст, мы используем конструкцию переменной такого вида (пример):
Файл с расширение .php:
PHP
1
$text = 'Тут текст';
И эта переменная выводится в шаблоне с расширением .html:
HTML5
1
2
3
<body>
{text}
</body>
А что если надо вывести конечный результат, скажем вот этого:
PHP
1
echo date('h:i:s d.m.y');
вот этого:
PHP
1
2
define('ST_T', microtime());
printf('Время генерации страницы %.5f секунд', microtime()-ST_T);
или вообще вот этого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$now_hours = date('G');
if($now_hours<8)
{
    echo 'Доброй ночи!';
}
elseif($now_hours<12 && $now_hours>=8 ) 
{
    echo 'Доброе утро!';
}
elseif($now_hours>=12 && $now_hours<17)
{
    echo 'Добрый день!';
}
elseif($now_hours>=17 && $now_hours<=23)
{
    echo 'Добрый вечер!';
}
Как тут сделать, что бы в шаблон вставлять только переменную, например {dert}, а не весь этот код? В общем в шаблоне php кода не должно быть.
Большое спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2013, 19:24
Ответы с готовыми решениями:

Подстановка переменных в шаблон
Здравствуйте, уважаемые форумчане! Можете подсказать, как реализовать подстановку значений, полученных из формы, в шаблон? Тот код,...

Подстановка переменных в глобальные массивы
Доброго времени суток. Совсем недавно я начал изучать php и у меня возник вопрос на который ответа я пока не нашел. У меня на странице...

Подстановка переменных в формулу
Доброго времени суток. Интересует такой вопрос: возможно ли в маткаде в формулу подставлять значение переменных (примерно так...

11
 Аватар для KSiS
26 / 26 / 16
Регистрация: 03.06.2013
Сообщений: 138
16.12.2013, 19:34
PHP файл:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$now_hours = date('G');
if($now_hours<8)
{
    $dert = 'Доброй ночи!';
}
elseif($now_hours<12 && $now_hours>=8 ) 
{
    $dert = 'Доброе утро!';
}
elseif($now_hours>=12 && $now_hours<17)
{
    $dert = 'Добрый день!';
}
elseif($now_hours>=17 && $now_hours<=23)
{
    $dert = 'Добрый вечер!';
}
$content = file_get_contents('file.html');
$content = str_replace('{dert}', $dert);
print $content;
Файл file.html :
HTML5
1
2
3
4
5
6
7
8
<!DOCTYPE html>
<head>
<title>Some title</title>
</head>
<body>
Приветствие ->> {dert}
</body>
</html>
Добавлено через 2 минуты
А вообще можно так делать:
PHP
1
2
3
4
5
$tpl = array(
'{dert}' => $dert,
'{time}' => time(),
);
$content = strtr($content, $tpl);
То есть в масив записать все что нужно заменять чтобы не вызывать 100500 раз str_replace
1
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
16.12.2013, 19:41
А не проще тогда уж вместо метки поставить вывод переменной
HTML5
1
2
3
<body>
<?=$now_hours?>
</body>
и инклюд шаблона сделать, чем заменять кучу меток
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$now_hours = date('G');
if($now_hours<8)
{
    $dert = 'Доброй ночи!';
}
elseif($now_hours<12 && $now_hours>=8 ) 
{
    $dert = 'Доброе утро!';
}
elseif($now_hours>=12 && $now_hours<17)
{
    $dert = 'Добрый день!';
}
elseif($now_hours>=17 && $now_hours<=23)
{
    $dert = 'Добрый вечер!';
}
include "template.html";
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
16.12.2013, 19:56  [ТС]
KSiS, спасибо, очень помогли!
0
 Аватар для KSiS
26 / 26 / 16
Регистрация: 03.06.2013
Сообщений: 138
17.12.2013, 00:19
crautcher,
Цитата Сообщение от Raisin Zn Посмотреть сообщение
В общем в шаблоне php кода не должно быть.
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
17.12.2013, 05:11  [ТС]
Покажите, пожалуйста еще пример с этим кодом:
PHP
1
2
define('ST_T', microtime());
printf('Время генерации страницы %.5f секунд', microtime()-ST_T);
и этим:
PHP
1
echo date('h:i:s d.m.y');
И еще: как можно в PHP заменить все русские слова/фразы на переменные, а далее завернуть все эти фразы в отдельный Lang-файл?
Спасибо.

Добавлено через 23 минуты
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Lang-файл
Языковой файл. Но он тоже с расширением PHP...
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
17.12.2013, 11:46
Цитата Сообщение от KSiS Посмотреть сообщение
crautcher, В общем в шаблоне php кода не должно быть.
Или что молния ударит в монитор?
0
 Аватар для KSiS
26 / 26 / 16
Регистрация: 03.06.2013
Сообщений: 138
17.12.2013, 11:53
PHP
1
2
3
4
5
6
7
8
9
define('ST_T', microtime());
$time_gen = sprintf('Время генерации страницы %.5f секунд', microtime()-ST_T);
$date = date('h:i:s d.m.y');
$tpl = array(
'{dert}' => $dert,
'{time_gen}' => $time_gen,
'{date}' => $date,
);
$content = strtr($content, $tpl);
Добавлено через 4 минуты
Цитата Сообщение от crautcher Посмотреть сообщение
Или что молния ударит в монитор?
дело не в молнии, просто человеку нужно без PHP кода, если есть такая возможность тогда почему не воспользоваться ней? К тому же это не костыль, а популярная конструкция.

Добавлено через 2 минуты
Цитата Сообщение от Raisin Zn Посмотреть сообщение
И еще: как можно в PHP заменить все русские слова/фразы на переменные, а далее завернуть все эти фразы в отдельный Lang-файл?
Спасибо.
Файл lang.php (или другой, в функции тоже замените):
Code
1
2
name = Имя
last_name = Фамилия
PHP
1
2
3
4
5
6
$lang = parse_ini_file('lang.php');
$tpl = array(
  '{name}' => $lang['name'],
  '{last_name}' => $lang['last_name'],
);
$content = strtr($content, $tpl);
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
17.12.2013, 12:01
Цитата Сообщение от KSiS Посмотреть сообщение
К тому же это не костыль, а популярная конструкция.
KSiS, может конструкция и популярная, но бредовая, могко говоря. Есть на форуме один человек, забыл его ник, так он на вопросы о шаблонах всегда даёт такую ссылку: http://www.phpinfo.su/articles... v_php.html
Там описано очень популярно, что такое шалоны и как с ними правильно работать. Честно говоря, именно эти две статьи о шаблонаx направили и меня на правильный путь (давно, но направили ).
1
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
17.12.2013, 14:30
Цитата Сообщение от Raisin Zn Посмотреть сообщение
В общем в шаблоне php кода не должно быть
вряд ли это соответствует реальной задаче.
Цитата Сообщение от KSiS Посмотреть сообщение
К тому же это не костыль, а популярная конструкция
это популярный костыль, уходящий корнями в далекое прошлое, когда люди искренне стали считать, что в "в шаблоне php кода не должно быть". В шаблоне не должно быть логики скрипта. От логики шаблона никуда не деться. Использование меток типа {var_name} в шаблонах оправдано только там, где шаблоны верстаются пользователями сайтов - это сугубо специфические сервисы, которых процент меньше чем 0.0001
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
28.12.2013, 19:21  [ТС]
Подскажите, как переделать для шаблона этот код:
PHP
1
2
3
            $result = mysql_query("SELECT * FROM `user`");
            while($myrow = mysql_fetch_assoc($result))
            echo $myrow['id']. $myrow['login']. $myrow['email']. '<br />';
Этот код выводит список всех id, имя пользователя, почту в одну строчку.

Добавлено через 12 минут
Вернее эти переменные:
PHP
1
$myrow['id']. $myrow['login']. $myrow['email'].
что отображались все пользователи.
Если вставляю в шаблон:
PHP
1
2
3
<?php
echo $myrow['id']. $myrow['login']. $myrow['email']. '<br />';
?>
то отображается всего один пользователь, самый первый.
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
29.01.2014, 09:57  [ТС]
Очень понравился этот способ: https://www.cyberforum.ru/post5505309.html https://www.cyberforum.ru/post5508870.html
А как сделать подключение шаблона в шаблоне таким же кодом:
HTML5
1
{include file='тут файл'}
Как то так.
Или придется все шаблоны собирать в файл.php:
HTML5
1
2
3
4
$content = file_get_contents('шапка.html');
$content = file_get_contents('меню.html');
$content = file_get_contents('боду.html');
$content = file_get_contents('подвал.html');
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2014, 09:57
Помогаю со студенческими работами здесь

Не работает подстановка переменных
Всем доброго времени суток! Не понимаю в чем ошибка, по логике все нормально, но почему-то не работает. $newController = new...

Подстановка переменных в сервлет
Привет еще раз)Подскажите,пожалуйста,такую штуку,вот есть форма: &lt;form action=&quot;qwery&quot; method=&quot;get&quot;&gt; &lt;input...

Подстановка переменных в DoCmd.RunSQL() и db.Execute()
Доброго времени, Я бы хотел использовать db.Execute вместо DoCmd.RunSQL(), так как он чуть быстрее и кода надо меньше писать, но давно...

Подстановка чисел вместо двух символьных переменных
Получено некоторое символьное выражение,содержащее две символьные переменные. Вместо этих символьных переменных необходимо подставить числа...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru