Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вывод содержимого ф-ции


Автор: Kirill Baranov 11.9.2006, 13:29
Есть у меня ф-ция:
Код

function write_pagetitle($text) {
    echo $text;
}


Ф-ция расположена в ячейке таблицы.
Есть переменная $text, которая формируется (чтоб её) к концу скрипта. А хочется вывести эту переменную именно там, где хочу, а не в конце скрипта. Как-то вроде можно сделать. Что-то типа echo write_pagetitle($text);
Где-то я такой прием видел, а где не помню. Очень нужно.

Автор: Darhazer 11.9.2006, 15:33
Покажи код где ее вызвал?

Автор: ZlojEzh 11.9.2006, 15:36
если я правильно понял, что нужно, то тебе помогут http://www.php.net/manual/ru/ref.outcontrol.php

Автор: Kirill Baranov 11.9.2006, 15:52
Darhazer, ну, например:
Код

<table>
<tr>
<td>
<?
function write_pagetitle($text) {
    echo $text;
}
?></td>
<td>test value of the cell</td>
</tr>
</table>

<?
$text='Какой-то текст';
?>


Так вот. Переменная $text у меня формируется только к концу выполнения скрипта. Эту переменную хорошо бы вставить там, где я определяю функцию write_pagetitle. То есть прямо в ячейке таблички.

ZlojEzh, не это не то. Output Control Functions используется в основном для Headers. Чтобы можно было ставить, например, перенаправления посеред скрипта. Это не то. В данном случае нуно че-то другое. Может я и ошибаюсь. Если это так, то лучше меня прямо ткнуть носом в какой-нить пример по этому случаю.

Автор: Darhazer 11.9.2006, 16:16
Так сделать нельзя.
Но можно вот так:
Код

<?
ob_start();
?>
<table>
<tr>
<td>
{pagetitle}
</td>
<td>test value of the cell</td>
</tr>
</table>
<?
$text='Какой-то текст';
$page = ob_get_contents();
ob_end_clean();
$page = str_replace("{pagetitle}", $text, $page);
echo $page;
?>

Автор: Gold Dragon 11.9.2006, 17:49
Что-то я не понял что нужно... может это?
Код

<table border=1>
    <tr>
        <td>
            <?
                echo write_pagetitle('Какой-то текст');

            ?>
        </td>
        <td>test value of the cell</td>
    </tr>
</table>

<?
function write_pagetitle($text) {
    return $text;
}
?>


но я бы сделал совсем по другому... не стоит мешать PHP и HTML..
Код

<?php
$a1 = write_pagetitle('Какой-то текст один');
$a2 = write_pagetitle('Какой-то текст два');
$a3 = write_pagetitle('Какой-то текст три');

echo <<<EOF
<table border=1>
    <tr>
        <td>{$a1}</td>
        <td>test value of the cell</td>
    </tr>
    <tr>
        <td>{$a2}</td>
        <td>{$a3}</td>
    </tr>
</table>
EOF;


//***************************************
// часть для функций
//***************************************
function write_pagetitle($text) {
    // ....................
    return $text;
    // ....................
}
?>

думаю понятно

Автор: GZep 12.9.2006, 19:36
просто в php весь текст идет в один поток. Но его можно перехватить функциями (начинаются с префикса ob_ - оутпут буферинг smile ) изменив тем самым или через javascript или через какой-нибудь другой язык, установленный на клиентской машине  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)