Forum Webscript.Ru
Программирование => PHP => Тема начата: 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’; Которая вылазит совершенно не в тему в самом начале.
-
А почему не воспользоваться return?
function ech() {
return "123";
}
-
Потому что функция ech() используется в других местах и должна делать именно echo;
А в этом месте надо именно return
-
function ech($return = 0) {
$str = "123";
if ($return) return $str;
echo "123";
}
-
Увы, но функцию ech менять нельзя :((
-
ob_start();
ech();
$content = ob_get_contents();
ob_end_clean();
echo "4444 ".$content." 5555";
-
Как выяснилось, этому чудику надо было всего лишь
echo “4444 ”;
ech();
echo ” 5555”;
-
Надо было вовсе не это. Но раз ничего другого предложить не можешь, то подойдет и это.
-
тут тебе помогут (http://www.doctor.ru)
-
2RomikChef: по-моему кто-то себя бестактно ведет.
-
Да.
Этот кое-кто отнимает кучу времени у кучи народу как минимум на двух форумах только потому, что его, видете ли, ломает писать в столбик и непременно хочется в строчку.
-
А в столбик то лучше. тем более потом с кодом проще разбираться. да и пробелы лишними почти небывают !
-
Проблема решить таки удалось:
[[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 явно не стоило