2010-11-22 6 views
5

je crée des modèles HTML avec php fonctionnalité Doms, maintenant j'aime ajouter des balises php dans mon modèle -à-direcomment ajouter des tags php avec l'analyseur 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; ?>'); 

mon problème est que le Royaume analyseur échapper à la ligne php ..

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

est-il une autre façon de faire cela?

+0

Tout comme une note, cela semble être un mauvais plan * * du point de vue de la sécurité . – syrion

+0

Cela ne semble pas être une bonne idée. Qu'est-ce que tu veux faire pour ça? –

+0

@syrion de quelle façon c'est un mauvais plan du point de vue de la sécurité?! – nfo

Répondre

3

Vous avez besoin d'un Processing Instruction

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

Exemple complet:

$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(); 

Résultat:

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

parfait, c'est exactement ce que je cherchais – nfo

+0

@nfo vous êtes les bienvenus. – Gordon

Questions connexes