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 :: Простой шаблонизатор своими руками

 PHP.SU

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


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

> Без описания
dmaw
Отправлено: 13 Сентября, 2013 - 13:07:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


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




Хочу написать простейший шаблонизатор, столкнулся с проблемой вставки своей функции в str_replace, пример кода:

PHP:
скопировать код в буфер обмена
  1. function posts()
  2. {
  3.     echo 'Тут некий контент полученный из БД';
  4. }
  5. $html = '<body>{content}</body>';
  6. $result = str_replace('{content}', posts(), $html);
  7. echo $result;


По сути результат толжен вывестить в 7-ой строке скрипта, но реально выводится в 6-ой строке, а затем строка 7 просто <body></body>

Пробовал внутри функции вместо echo использовать return, тогда вовсе ничего не происходит, на странице выводится <body></body>

Помогите, пожалуйста, найти решение.

(Отредактировано автором: 13 Сентября, 2013 - 13:11:49)

 
 Top
IllusionMH
Отправлено: 13 Сентября, 2013 - 13:11:17
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




dmaw, что такое posts()?

И зачем весь этот велосипед. Если можно <?=content;?> ?

(Отредактировано автором: 13 Сентября, 2013 - 13:11:58)

 
 Top
dmaw
Отправлено: 13 Сентября, 2013 - 13:12:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


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




IllusionMH пишет:
dmaw, что такое posts()?

Прошу прощения, написал неверно, поправил своё сообщение.
 
 Top
IllusionMH
Отправлено: 13 Сентября, 2013 - 13:17:56
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




dmaw, return же!
 
 Top
Мелкий Супермодератор
Отправлено: 13 Сентября, 2013 - 13:19:18
Post Id



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


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


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




dmaw пишет:
использовать return, тогда вовсе ничего не происходит

Неправда (либо каким-то странным образом пробуете).
PHP:
скопировать код в буфер обмена
  1. function posts() {
  2.     return 'какая-то строка';
  3.     }


-----
PostgreSQL DBA
 
 Top
dmaw
Отправлено: 13 Сентября, 2013 - 13:42:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


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




Мелкий, Вы правы, функция была реализована примерно вот так:

PHP:
скопировать код в буфер обмена
  1. function posts()
  2. {
  3.     //тут некий код
  4.  
  5.     include('posts.php');
  6. }

В файле posts.php код:
PHP:
скопировать код в буфер обмена
  1. return 'Тут некий контент полученный из БД';


Из-за include и не работало.

Всем спасибо)
 
 Top
esterio
Отправлено: 13 Сентября, 2013 - 14:20:23
Post Id



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


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


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




include тоже может возвращать данные

PHP:
скопировать код в буфер обмена
  1.  function posts()
  2.     {
  3.         //тут некий код
  4.      
  5.         return include('posts.php');
  6.     }


posts.php
PHP:
скопировать код в буфер обмена
  1.     return 'Тут некий контент полученный из БД';
 
 Top
kokandrey
Отправлено: 07 Ноября, 2013 - 14:34:13
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Янв. 2010  
Откуда: Нижегородская обл. г. Дзержинск


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




если инклюдите, то не забывайте, что файл вставляется как HTML код, а не как PHP.
 
 Top
esterio
Отправлено: 07 Ноября, 2013 - 15:29:58
Post Id



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


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


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




kokandrey пишет:
если инклюдите, то не забывайте, что файл вставляется как HTML код, а не как PHP.

include.php

Что будет?

Ну и на дату посмотрите
 
 Top
DelphinPRO
Отправлено: 07 Ноября, 2013 - 17:47:56
Post Id



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


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


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




kokandrey пишет:
если инклюдите, то не забывайте, что файл вставляется как HTML код, а не как PHP.

Вот же ж блин! а у меня по не знанию весь шаблонизатор построен на инклудах с php вставками. Как он работает — хз.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB