2008-10-05 6 views
44

Je génère une tonne de code XML qui doit être transmise à une API en tant que variable de publication lorsqu'un utilisateur clique sur un bouton de formulaire. Je veux aussi être en mesure de montrer à l'utilisateur le XML avant la main.Comment capturer la sortie PHP dans une variable?

Le code est sorta comme suit dans la structure:

<?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> 

Mon XML est généré avec quelques boucles while et des trucs. Il doit ensuite être affiché aux deux endroits (l'aperçu et la valeur du formulaire).

Ma question est. Comment puis-je capturer le XML généré dans une variable ou quoi que ce soit, je n'ai donc qu'à le générer une fois et ensuite l'imprimer comme indiqué pour le générer dans l'aperçu, puis à nouveau dans la valeur du formulaire?

Répondre

84
<?php 
ob_start(); 
?> 
<xml/> 
<?php 
$xml = ob_get_clean(); 
?> 
<input value="<?php echo $xml" ?>/> 
+14

@Jleagle $ xml = ob_get_clean() retourne de sortie et tampon à sortie propre. Il exécute essentiellement à la fois ob_get_contents() et ob_end_clean() – jamietelin

+0

Pouvez-vous les imbriquer? –

8

On dirait que vous voulez PHP Output Buffering

ob_start(); 
// make your XML file 

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

Notez que cesse mise en mémoire tampon de sortie la sortie d'être envoyé, jusqu'à ce que vous « flush » il. Voir le Documentation pour plus d'informations.

1

Vous pouvez essayer ceci:

<?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))?></pre> 
<textarea rows="8" cols="50"><?=$string?></textarea> 
</html> 
Questions connexes