Автор Тема: echo -> return  (Прочитано 4390 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
echo -> return
« : 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’; Которая вылазит совершенно не в тему в самом начале.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
echo -> return
« Ответ #1 : 12 Июля 2002, 12:10:32 »
А почему не воспользоваться return?
function ech()    {
return 
"123";
}
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
echo -> return
« Ответ #2 : 12 Июля 2002, 12:17:31 »
Потому что функция ech() используется в других местах и должна делать именно echo;
А в этом месте надо именно return

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
echo -> return
« Ответ #3 : 12 Июля 2002, 12:29:23 »

function ech($return 0) {
      
$str "123";
      if (
$return) return $str;
      echo 
"123";
}
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
echo -> return
« Ответ #4 : 12 Июля 2002, 12:34:45 »
Увы, но функцию ech менять нельзя :((

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
echo -> return
« Ответ #5 : 12 Июля 2002, 12:39:33 »

ob_start
();
ech();
$content ob_get_contents();
ob_end_clean();
echo 
"4444 ".$content." 5555";
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
echo -> return
« Ответ #6 : 12 Июля 2002, 14:33:58 »
Как выяснилось, этому чудику надо было всего лишь
echo “4444 ”;
ech();
echo ” 5555”;

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
echo -> return
« Ответ #7 : 12 Июля 2002, 15:07:18 »
Надо было вовсе не это. Но раз ничего другого предложить не можешь, то подойдет и это.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
echo -> return
« Ответ #8 : 12 Июля 2002, 15:18:38 »

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
echo -> return
« Ответ #9 : 12 Июля 2002, 15:30:45 »
2RomikChef: по-моему кто-то себя бестактно ведет.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
echo -> return
« Ответ #10 : 12 Июля 2002, 15:40:54 »
Да.
Этот кое-кто отнимает кучу времени у кучи народу как минимум на двух форумах только потому, что его, видете ли, ломает писать в столбик и непременно хочется в строчку.

Оффлайн advocat

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 73
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.php.net.ua
echo -> return
« Ответ #11 : 15 Июля 2002, 15:48:24 »
А в столбик то лучше. тем более потом с кодом проще разбираться. да и пробелы лишними почти небывают !
заходите в гости
адвокат, это не профессия, это диагноз ! [ обитаю в PHP ]

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
echo -> return
« Ответ #12 : 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 явно не стоило

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28