2009-09-01 14 views
1

J'utilise dom-> createTextNode() en PHP. Je vois qu'il s'échappe automatiquement des caractères par exemple "/" etc. Selon le manuel de PHP c'est un comportement standard.dom-> createTextNode de PHP échappe certains caractères

Est-il possible qu'il n'échappe à aucun caractère?

Merci.

+0

Vous pourriez faire quelque chose de mal. Ça n'échappe à rien pour moi. Collez du code. –

Répondre

3

Si certains caractères ne sont pas échappés, vous pourriez ne pas obtenir un fichier XML valide, à la fin.

Si vous ne voulez pas que des caractères soient échappés, utilisez DOMDocument::createCDATASection pour obtenir CDATA sections dans votre fichier XML.

Bien que, notez que vous obtiendrez ce genre de choses (bien, sections CDATA) dans votre XML:

<tag><![CDATA[<greeting>Hello, world!</greeting>]]></tag> 
+0

Cela ne fonctionne que si vous saveXml(), que faire lorsque vous utilisez saveHTML()? – umpirsky

1

Si vous pouvez éviter les séquences d'échappement en créant un noeud DomDocumentFragment et annexant texte brut avec la méthode appendXML():

$rawXMLNode = $domDoc->createDocumentFragment(); 
    $rawXMLNode->appendXML("<tag>text</tag><tag2>text2</tag2>"); 
    $someNode->appendChild($rawXMLNode); 

Cependant, je ne pense pas accès, vous pouvez nécessairement les DOM de ce texte brut sans recharger le document. Certains caractères ne sont toujours pas autorisés. Je devais faire un traitement de chaîne pour insérer du php dans un document html en utilisant cette méthode:

$elem = $domHtml->getElementById('header'); 
    $newElem = $domHtml->createDocumentFragment(); 
    $newElem->appendXML('<div id="header"><?php include("templates/header.html"); QQQ?></div>'); 
    $elem->parentNode->replaceChild($newElem, $elem); 
    $filedata = $domHtml->saveHTML(); 
    $filedata = str_replace('QQQ', '?', $filedata); 
Questions connexes