当用户点击表单按钮时,我正在生成大量的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>
我的XML是通过一些while循环和东西生成的。然后需要在两个位置显示(预览和表单值)。
我的问题是。如何在变量或其他内容中捕获生成的XML,因此我只需要生成一次,然后将其打印出来,然后将其打印为在预览中生成它,然后再在表单值内生成?
答案 0 :(得分:100)
<?php ob_start(); ?>
<xml/>
<?php $xml = ob_get_clean(); ?>
<input value="<?php echo $xml ?>" />͏͏͏͏͏͏
答案 1 :(得分:42)
把它放在你的开始:
ob_start();
要恢复缓冲区:
$value = ob_get_contents(); ob_end_clean();
有关详细信息,请参阅http://us2.php.net/manual/en/ref.outcontrol.php和各个函数。
答案 2 :(得分:9)
听起来你想要PHP Output Buffering
ob_start();
// make your XML file
$out1 = ob_get_contents();
//$out1 now contains your XML
请注意,输出缓冲会停止发送输出,直到您“刷新”它。有关详细信息,请参阅Documentation。
答案 3 :(得分:1)
你可以试试这个:
<?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("<", "<", str_replace(">", ">", $string))?></pre>
<textarea rows="8" cols="50"><?=$string?></textarea>
</html>