Forum Webscript.Ru

Программирование => PHP => Тема начата: Foshvad от 12 Июля 2002, 11:24:07

Название: echo -> return
Отправлено: Foshvad от 12 Июля 2002, 11:24:07
Есть функция, которая что-то echo; Во что ее надо заключить, чтоб в результате получился return?


function ech() {
echo “123”;
}

echo “4444 ”.ech().” 5555”;


очень бы хотелось в результате увидеть “4444 123 5555”


Думал получится

echo “4444 ”. ob_start().ech().ob_get_contents().ob_end_clean().” 5555”;


но ob_start() возвращает ‘1’; Которая вылазит совершенно не в тему в самом начале.
Название: echo -> return
Отправлено: GotZfild от 12 Июля 2002, 12:10:32
А почему не воспользоваться return?
function ech()    {
return "123";
}
Название: echo -> return
Отправлено: Foshvad от 12 Июля 2002, 12:17:31
Потому что функция ech() используется в других местах и должна делать именно echo;
А в этом месте надо именно return
Название: echo -> return
Отправлено: GotZfild от 12 Июля 2002, 12:29:23

function ech($return = 0) {
      $str = "123";
      if ($return) return $str;
      echo "123";
}
Название: echo -> return
Отправлено: Foshvad от 12 Июля 2002, 12:34:45
Увы, но функцию ech менять нельзя :((
Название: echo -> return
Отправлено: GotZfild от 12 Июля 2002, 12:39:33

ob_start();
ech();
$content = ob_get_contents();
ob_end_clean();
echo "4444 ".$content." 5555";
Название: echo -> return
Отправлено: Меняздесьдавнонет от 12 Июля 2002, 14:33:58
Как выяснилось, этому чудику надо было всего лишь
echo “4444 ”;
ech();
echo ” 5555”;
Название: echo -> return
Отправлено: Foshvad от 12 Июля 2002, 15:07:18
Надо было вовсе не это. Но раз ничего другого предложить не можешь, то подойдет и это.
Название: echo -> return
Отправлено: Меняздесьдавнонет от 12 Июля 2002, 15:18:38
тут тебе помогут (http://www.doctor.ru)
Название: echo -> return
Отправлено: Foshvad от 12 Июля 2002, 15:30:45
2RomikChef: по-моему кто-то себя бестактно ведет.
Название: echo -> return
Отправлено: Меняздесьдавнонет от 12 Июля 2002, 15:40:54
Да.
Этот кое-кто отнимает кучу времени у кучи народу как минимум на двух форумах только потому, что его, видете ли, ломает писать в столбик и непременно хочется в строчку.
Название: echo -> return
Отправлено: advocat от 15 Июля 2002, 15:48:24
А в столбик то лучше. тем более потом с кодом проще разбираться. да и пробелы лишними почти небывают !
Название: echo -> return
Отправлено: Foshvad от 17 Июля 2002, 15:33:21
Проблема решить таки удалось:
[[somefunction(\'param\')]] заменяется на


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



а в


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 явно не стоило