Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > PHP DOM вставка CDATA


Автор: Gwendolen 31.3.2013, 11:05
Нигде, ни в документации ни в примерах на других сайтах не видел, чтобы createCDATASection использовалась следующим образом:
Код

$doc->createCDATASection('<![CDATA[test 2]]>')


А  у меня почему-то иначе не работает. Т.е. само не вставляет "<![CDATA[" перед текстом и "]]>" после.

Как сделать, чтобы начало и конец CDATA вставлялся автоматически? 
Или это невозможно? Тогда почему в документации не указано? smile 

Вот мой код:
Код

  $text = '<p>Text</p>';
  $doc = new DOMDocument();
  $doc->loadHTML($text);
  $doc->appendChild($doc->createCDATASection('test 1'));
  $doc->appendChild($doc->createElement('br'));
  $doc->appendChild($doc->createCDATASection('<![CDATA[test 2]]>'));
  
  print $doc->saveHTML();


В итоге получаю:
Цитата

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Text</p>test 1<br><![CDATA[test 2]]></body></html>


P.S. Если выводить как print $doc->saveXML(); то работает как ожидалось, но не вылезет ли от этого ещё какая-нибудь проблема smile 

Автор: Aliance 1.4.2013, 10:23
Цитата(Gwendolen @  31.3.2013,  12:05 Найти цитируемый пост)
Как сделать, чтобы начало и конец CDATA вставлялся автоматически? 

Ну вроде как он и http://www.php.net/manual/ru/domcdatasection.construct.php создаваться автоматически.

Автор: Fortop 1.4.2013, 17:06
Цитата(Aliance @  1.4.2013,  10:23 Найти цитируемый пост)
Ну вроде как он и должен создаваться автоматически. 

Для HTML не вставляется.

http://en.wikipedia.org/wiki/CDATA

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)