Разъясните пожалуйста можно ли занести результат в переменную (мб я переработал)
PHP |
$tpl = str_replace($array[$i][0],eval($array[1][$i]),$tpl); |
Обращаю внимание на
Данная переменная содержит:
Вообщем на шаблоне у меня есть
HTML |
{php} echo "hello world"; {/php}
|
Данной записью:
PHP |
$tpl = str_replace($array[$i][0],eval($array[1][$i]),$tpl); |
Я хотел заменить:
HTML |
{php} echo "hello world"; {/php}
|
На
Всё так и происходит, но это 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 - я помоему это и сам понял
поэтому и спрашиваю как выполнить
php код и занести результат выполнения в переменную?
Спустя 5 минут, 35 секунд (3.09.2009 - 15:15) Michael написал(а):
А код зачем неверный тогда кидаешь?
Я в этом не спец, но смотри есть такие функции:
ob_clean
ob_get_contents
и подобные
для работы с формирующимся наполнением документа.
может привертишь.
Спустя 19 минут, 53 секунды (3.09.2009 - 15:35) Семён написал(а):
Буферизация и объекты тут не помогут.
Вообщем знакомый программер посоветовал не идти путём eval()
Спустя 26 минут, 3 секунды (3.09.2009 - 16:01) Gradus написал(а):
Найдёш ответ отпишись
Спустя 44 минуты, 17 секунд (3.09.2009 - 16:45) Семён написал(а):
Gradus Спустя 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); |