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
Форумы портала PHP.SU :: Версия для печати :: Подключении функции
Форумы портала PHP.SU » PHP » Регулярные выражения » Подключении функции

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

1. Zvero_O - 07 Февраля, 2010 - 13:39:30 - перейти к сообщению
Написан свой шаблонизатор, вот кусок кода из него:
PHP:
скопировать код в буфер обмена
  1. $temp = preg_replace_callback('/<!-- load\[(.*)\] -->/',create_function('$matches', 'return $matches[1];'), $temp);


Т.е. из шаблона типа "<!-- load[siteNews(5);] -->" он вернёт "siteNews(5);".
Как мне теперь подключить указанную в комментарии функцию? Однако
2. valenok - 07 Февраля, 2010 - 14:20:10 - перейти к сообщению
eval или variables variables
3. RomAndry - 07 Февраля, 2010 - 14:30:35 - перейти к сообщению
Вопрос о другом:
А зачам в верстке задавать количество тех же новостей?
4. Zvero_O - 07 Февраля, 2010 - 14:42:37 - перейти к сообщению
RomAndry пишет:
Вопрос о другом:
А зачам в верстке задавать количество тех же новостей?

Функцию привёл чисто для примера.
(Добавление)
Теперь столкнулся с другой проблемой:
В функции используется "return", но в итоге не чего не выводится. Как исправить?
При использовании "echo" функция выводится в начале до-та. Недовольство, огорчение
(Добавление)
Кто нибудь поможет? К сегоднешнему дню хотелось бы доделать =(
5. valenok - 08 Февраля, 2010 - 09:11:25 - перейти к сообщению
Подумайте почему выводится вверху,
почему ретурн вообще ничего не печатает
и сами поймете что и как изменить.
6. Zvero_O - 08 Февраля, 2010 - 13:23:38 - перейти к сообщению
о_О я уже что только не пробовал...
Выводится сверху, потому что файл функций подключается с самого начала.
Тестировал функцию, всё отлично работает, но при использовании шаблонизатора - пустое место...
Почему return не хочет работать, и как вывести данные из функции?
7. Champion - 08 Февраля, 2010 - 13:43:12 - перейти к сообщению
А почему ты дкмаешь, что return не работает? Расскажи, может я пропустил момент, когда это произошло, но ретурн никогда не был оператором вывода.
8. Zvero_O - 08 Февраля, 2010 - 13:58:32 - перейти к сообщению
При str_replace('{TEST}', testFunc(), $text); всё работало. Когда в функции использовался return. Тогда почему в данном примере не работает?
9. movEAX - 08 Февраля, 2010 - 15:50:57 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.  function SiteNews($id_news){
  3.         return 'Новость_'.$id_news;
  4.  }
  5.  
  6.  $temp = '<!-- load[SiteNews(23)] -->';
  7.  
  8.                 '/<!-- load\[(.*)\] -->/',
  9.                 create_function(
  10.                     '$match',
  11.                     'eval(\'$news = \'.$match[1].\';\'); return $news;'),
  12.                 $temp);
  13.  

Что-то как-то криво.. но работает.
10. Zvero_O - 08 Февраля, 2010 - 16:12:56 - перейти к сообщению
Спасибо кончено... Но это не то Недовольство, огорчение
Дело в том, что в комментарии заместо "<!-- load[siteNews(5);] -->" может быть "<!-- load[someFunction();] -->". Т.е. нужно выполнить указанную функцию, и вывести рез-ат...
(Добавление)
Ха-ха
Сделал!
PHP:
скопировать код в буфер обмена
  1. $temp = preg_replace_callback('/<!-- load\[(.*)\] -->/', create_function('$matches', 'return eval("return $matches[1];");'), $temp);


Всем спасибо, очень благодарен! Улыбка

 

Powered by ExBB FM 1.0 RC1