PHP'nin dom-> createTextNode bazı characthers kaçar

2 Cevap php

PHP () dom-> createTextNode kullanıyorum. Ben otomatik PHP'nin kılavuzda bu standart bir davranıştır göre vb "karakterleri örneğin \ /" kaçar görüyoruz.

O herhangi bir karakter kaçış yok mümkün mü?

Teşekkürler.

2 Cevap

Bazı karakterler kaçmış değil iseniz, sonunda, geçerli bir XML dosyası alamayabilirsiniz.

Eğer herhangi bir karakter belki XML dosyasında DOMDocument::createCDATASection , to get CDATA sections kullanılarak, kaçtı olmak istemiyorsanız, yardımcı olabilir.

Rağmen, sizin XML şeylerin (well, CDATA sections) bu tür alacak unutmayın:

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

Bir DomDocumentFragment düğümü oluşturmak ve appendXML () yöntemi ile ham metni ekleyerek kaçış dizileri önleyebilirsiniz:

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

Ancak ben mutlaka belgeyi yeniden olmadan bu ham metin DOM erişebilirsiniz sanmıyorum. Ben bu yöntemi kullanarak bir html belgeye bazı php eklemek için bazı dize işlem yapmak için gerekli otellerle de bazı karakterler hala izin verilmez:

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