echo -> return

Foshvad

Guest
Автор оригинала: RomikChef
мля, о чем мы тут вообще говорим?
Чем тебя не устраивает,
function ech() {
echo “123”;
}
echo “4444 ”.ech().” 5555”;
????????????????????????????????
тем, что это выведет 123 444 5555

Фукнкию я бы с радостью переделал, ноон является частью большого скприта, которой писал НЕ Я.

echo “4444 ”.include('script.php').” 5555”;

Так вот script.php изменять крайне нежелательно, от этого и начался сыр-бор. :(
 

tony2001

TeaM PHPClub
значит так.
Чувствую, что щас опять буду цензуру проводить, но уже над собой.
ВНИМАТЕЛЬНО ПРОЧТИ мой предыдущий пост с кодом и исправь именно так эту свою функцию.
это повлияет только в НУЖНОМ месте - по умолчанию функция будет работать как и раньше.
понял/нет ?
 

Foshvad

Guest
2tony2001: все внимательно прочел... только скажите на милость, что делать, если эта фукнция include?
PHP:
echo “4444 ”.include('script.php').” 5555”;
маа-а-аленький вопросик: добиться return'а НЕ меняя script.php и не делая предварительных ob_.... возможно или нет?
 

RomikChef

Guest
мне вот интересно, о нам наш гений программирования возразит на такой, в общем-то очевиднейший вариант
echo "4444 ";
ech();
echo " 5555";
 

Foshvad

Guest
2RomikChef: так можно, просто хотелось проще :)))
Похоже, именно так и надо будет сделать.
 

С.

Guest
Функция упоминается в программе в двух случаях:
1) при определении функции
2) при вызове функции

Вопрос человек состоит в том, как сделать, чтоб заработало, но при этом ничего не трогать ни в 1-ом случае, ни во 2-ом?

Я - пас.
 

Foshvad

Guest
Проблема решить таки удалось:
[[somefunction('param')]] заменяется на

PHP:
$tpl[$template] = str_replace('[[','".echo2return(\'',$tpl[$template]);
$tpl[$template] = str_replace(']]','\')."',$tpl[$template]);

а в

PHP:
function echo2return ($string)	{
extract($GLOBALS);
$string = str_replace('\"','"',$string);
ob_start();eval("echo $string;");$contents=ob_get_contents();ob_end_clean();
return $contents;
}

В "столбик" это записать было нельзя, так как обрабатывается это eval'ом в шаблоне, да и такие функции, как print_r изменить чтоб они return вместо echo явно не стоило
 
Сверху