如何将PHP输出捕获到变量中?

Bin*_*les 55 php xml

我正在生成大量的XML,当用户单击表单按钮时,该XML将作为post变量传递给API.我还希望能够事先向用户显示XML.

代码在结构上类似于以下内容:

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

<xml>
    <morexml>

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

<lastofthexml>

<?php ?>

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

    <form>
        <input id="xml" value="theXMLagain" />
    </form>
</html>
Run Code Online (Sandbox Code Playgroud)

我的XML是通过一些while循环和东西生成的.然后需要在两个位置显示(预览和表单值).

我的问题是.如何在变量或其他任何内容中捕获生成的XML,因此我只需要生成一次,然后将其打印出来,然后在预览中生成它,然后再在表单值内部生成它?

moo*_*moo 104

<?php ob_start(); ?>
<xml/>
<?php $xml = ob_get_clean(); ?>
<input value="<?php echo $xml ?>" />??????
Run Code Online (Sandbox Code Playgroud)

  • @Jleagle $ xml = ob_get_clean()将返回输出buffert和clean输出.它基本上执行ob_get_contents()和ob_end_clean() (17认同)

Rob*_*t K 43

把它放在你的开始:

ob_start();

并获得缓冲区:

$value = ob_get_contents();
ob_end_clean();

有关详细信息,请参阅http://us2.php.net/manual/en/ref.outcontrol.php和各个函数.


max*_*ver 10

听起来你想要PHP输出缓冲

ob_start(); 
// make your XML file

$out1 = ob_get_contents();
//$out1 now contains your XML
Run Code Online (Sandbox Code Playgroud)

请注意,输出缓冲会停止发送输出,直到您"刷新"它.有关详细信息,请参阅文档.