[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Результат скрипта в переменную
Семён
Разъясните пожалуйста можно ли занести результат в переменную (мб я переработал)

PHP
$tpl = str_replace($array[$i][0],eval($array[1][$i]),$tpl);


Обращаю внимание на
PHP
eval($array[1][$i]

Данная переменная содержит:
PHP
echo "hello world";


Вообщем на шаблоне у меня есть

HTML
{php}
echo "hello world";
{/php}


Данной записью:
PHP
$tpl = str_replace($array[$i][0],eval($array[1][$i]),$tpl);


Я хотел заменить:

HTML
{php}
echo "hello world";
{/php}


На
HTML
Hello world


Всё так и происходит, но это 123 выползает не в то место где стояло:
HTML
{php}
echo "hello world";
{/php}


А по традиции в самый вверх страницы, есть предположение что тут как-то нужно использовать объекты.

Помогите. Правильно заносить eval результат.



Спустя 11 минут, 19 секунд (3.09.2009 - 12:01) Семён написал(а):
Вообщем я думал получиться что-то типо вот так:
PHP
$tpl str_replace($var1,eval($var2),$tpl);
$tpl str_replace("test","hello world"$tpl);


Он в принцепе заменяет всё как нужно, но вот положение hello world перемещается из шаблона в шапку.

Спустя 8 минут, 20 секунд (3.09.2009 - 12:09) Семён написал(а):
Т.е. грубо говоря как вогнать результат в переменную, а не выводить его?

Спустя 2 часа, 53 минуты, 28 секунд (3.09.2009 - 15:03) Michael написал(а):
Функция eval не вернет тебе строковый результат, а выполнит код (echo) и вернет корректно ли выполнен код.

Спустя 6 минут, 51 секунда (3.09.2009 - 15:10) Семён написал(а):
Michael - я помоему это и сам понял smile.gif поэтому и спрашиваю как выполнить php код и занести результат выполнения в переменную?

Спустя 5 минут, 35 секунд (3.09.2009 - 15:15) Michael написал(а):
А код зачем неверный тогда кидаешь? smile.gif
Я в этом не спец, но смотри есть такие функции:
ob_clean
ob_get_contents
и подобные
для работы с формирующимся наполнением документа.
может привертишь.

Спустя 19 минут, 53 секунды (3.09.2009 - 15:35) Семён написал(а):
Буферизация и объекты тут не помогут.
Вообщем знакомый программер посоветовал не идти путём eval()

Спустя 26 минут, 3 секунды (3.09.2009 - 16:01) Gradus написал(а):
Найдёш ответ отпишись smile.gif

Спустя 44 минуты, 17 секунд (3.09.2009 - 16:45) Семён написал(а):
Gradus ph34r.gif

Спустя 37 минут, 1 секунда (3.09.2009 - 17:22) kirik написал(а):
Цитата (Семён @ 3.09.2009 - 07:35)
Вообщем знакомый программер посоветовал не идти путём eval()

Я тоже посоветую отказаться от eval. Если ты пишешь шаблонизатор, то чем отличается
Код
{php}
echo "hello world";
{/php}

от
PHP
<?php
echo 
\"hello world\";

?? Менять шило на мыло при этом усложняя приложение не стоит.

Цитата (Семён @ 3.09.2009 - 07:35)
Буферизация и объекты тут не помогут.

Почему?
PHP
$eval = 'echo "Sonota";';

ob_start();
eval(
$eval);
$tpl = ob_get_clean();

echo "Template:\n".$tpl;


Можешь даж функцию заделать:
PHP
function _eval($code)
{
    ob_start();
    eval($code);
    return ob_get_clean();
}

// .......
$tpl = str_replace($array[$i][0], _eval($array[1][$i]), $tpl);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.