2010-11-22 12 views
5

puedo crear algunas plantillas HTML con funcionalidad doms php, ahora me gustaría añadir algunas etiquetas de PHP en mi plantilla es decircómo añadir etiquetas de PHP con el analizador DOM

$input = $this->dom->createElement('input'); 
$input->setAttribute("type", "text"); 
$input->setAttribute("name", $name); 
$input->setAttribute("class", "input"); 
$input->setAttribute("id", $name); 
$input->setAttribute("value", '<?=$foo->bar; ?>'); 

mi problema es, que el dom analizador escapar de la línea php ..

<input type="text" name="id" class="input" id="id" value="\&lt;?=$content-&gt;id;?&gt;" /> 

¿hay alguna otra manera de hacer esto?

+0

Así como una nota, éste parece ser un * Plan de mala * desde el punto de vista de seguridad . – syrion

+0

Esto no parece una buena idea. ¿Para qué quieres hacer esto? –

+0

@syrion ¿de qué manera este es un mal plan desde el punto de vista de la seguridad? – nfo

Respuesta

3

Se necesita un Processing Instruction

$php = $dom->createProcessingInstruction('php', 'echo $foo->bar;'); 

ejemplo completo:

$dom = new DOMDocument; 
$dom->loadXml('<html><head><title>Test</title></head><body/></html>'); 
$dom->getElementsByTagName('body')->item(0)->appendChild(
    $dom->createProcessingInstruction('php', 'echo $foo->bar;') 
); 
$dom->format = TRUE; 
echo $dom->saveXML(); 

Resultado:

<?xml version="1.0"?> 
<html> 
    <head> 
    <title>Test</title> 
    </head> 
    <body> 
    <?php echo $foo->bar;?> 
    </body> 
</html> 
+1

perfecto, esto es exactamente lo que estaba buscando – nfo

+0

@nfo eres bienvenido. – Gordon

Cuestiones relacionadas