Как мне захватить вывод PHP в переменную? - PullRequest
53 голосов
/ 05 октября 2008

Я генерирую тонну XML, который должен быть передан в API в качестве переменной post, когда пользователь нажимает кнопку формы. Я также хочу иметь возможность показать пользователю XML заранее.

Код выглядит примерно так:

<code><?php
    $lots of = "php";
?>

<xml>
    <morexml>

<?php
    while(){
?>
    <somegeneratedxml>
<?php } ?>

<lastofthexml>

<?php ?>

<html>
    <pre>
      The XML for the user to preview
    

Мой XML генерируется с несколькими циклами while и прочим. Затем он должен быть показан в двух местах (предварительный просмотр и значение формы).

Мой вопрос Как мне записать сгенерированный XML в переменную или что-то еще, поэтому мне нужно сгенерировать его только один раз, а затем просто распечатать, как при генерации, внутри предварительного просмотра, а затем снова внутри значения формы?

Ответы [ 4 ]

100 голосов
/ 05 октября 2008
<?php ob_start(); ?>
<xml/>
<?php $xml = ob_get_clean(); ?>
<input value="<?php echo $xml ?>" />͏͏͏͏͏͏
42 голосов
/ 05 октября 2008

Поместите это в начале:

ob_start();

И чтобы вернуть буфер обратно:

$value = ob_get_contents();
ob_end_clean();

См. http://us2.php.net/manual/en/ref.outcontrol.php и отдельные функции для получения дополнительной информации.

9 голосов
/ 05 октября 2008

Звучит так, как вы хотите Буфер вывода PHP

ob_start(); 
// make your XML file

$out1 = ob_get_contents();
//$out1 now contains your XML

Обратите внимание, что буферизация вывода останавливает отправку вывода, пока вы не "очистите" его. См. Документация для получения дополнительной информации.

1 голос
/ 06 октября 2008

Вы можете попробовать это:

<code><?php
$string = <<<XMLDoc
<?xml version='1.0'?>
<doc>
  <title>XML Document</title>
  <lotsofxml/>
  <fruits>
XMLDoc;

$fruits = array('apple', 'banana', 'orange');

foreach($fruits as $fruit) {
  $string .= "\n    <fruit>".$fruit."</fruit>";
}

$string .= "\n  </fruits>
</doc>";
?>
<html>
<!-- Show XML as HTML with entities; saves having to view source -->
<pre><?=str_replace("<", "&lt;", str_replace(">", "&gt;", $string))?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...