2008-10-05 11 views
44

Estoy generando una tonelada de XML que se pasará a una API como una variable de publicación cuando un usuario haga clic en un botón de formulario. También quiero poder mostrarle al usuario el XML de antemano.¿Cómo capturo el resultado PHP en una variable?

El código es sorta como la siguiente estructura:

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

Mi XML se está generando con unos pocos mientras bucles y cosas así. Luego debe mostrarse en los dos lugares (la vista previa y el valor del formulario).

Mi pregunta es. ¿Cómo capturo el XML generado en una variable o lo que sea, de modo que solo tengo que generarlo una vez y luego simplemente imprimirlo como apposed para generarlo dentro de la vista previa y luego nuevamente dentro del valor del formulario?

Respuesta

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

@Jleagle $ xml = ob_get_clean() devolverá buffert salida y la salida limpia. Básicamente ejecuta tanto ob_get_contents() como ob_end_clean() – jamietelin

+0

¿Puedes anidarlos? –

8

Parece que usted quiere PHP Output Buffering

ob_start(); 
// make your XML file 

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

Tenga en cuenta que el almacenamiento en búfer de salida se detiene la salida de ser enviado, hasta que "vaciar" la misma. Vea el Documentation para más información.

1

Usted podría intentar esto:

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