предотвратить декодирование PHP DOM - PullRequest
1 голос
/ 07 декабря 2011

PHP DOM автоматически декодирует. Например, * декодируется при создании элемента DOME. Есть ли способ предотвратить это. Одно из решений состоит в том, чтобы предварительно обработать текст и послесловия постобработать его, но это больше похоже на хак.

пример кода:

$domDoc = new \DOMDocument();
$domEl = $domDoc->createElement('foo', 'text with * in it');
$domDoc->appendChild($domEl);
echo $domDoc->saveXML();

1 Ответ

1 голос
/ 20 февраля 2012

DOMDocument, или, вернее, libxml, имеет логический флаг substituteEntities:

Собственный.Независимо от того, чтобы заменить объекты.Этот атрибут не является частью спецификации DOM и специфичен для libxml.

Однако это не будет работать для ваших объектов ASCII, потому что они предопределены.Был отчет об ошибке, запрашивающий это для PHP 5.1.4, который помечен как "Не ошибка", потому что

Поведение корректно - это предопределенные объектыи substituteEntities не влияет на их поведение.См. Спецификации для получения дополнительной информации: http://www.w3.org/TR/2004/REC-xml-20040204/#sec-predefined-ent

Также см. http://xmlsoft.org/entities.html

Обратите внимание, что во время сохранения libxml2 обеспечивает преобразование предопределенных объектов, где это необходимо для предотвращенияпроблемы правильной формы, а также будут прозрачно заменять их на символы (т. е. он не будет генерировать ссылочные элементы сущностей в дереве DOM или вызывать обратный вызов reference () SAX при их поиске во входных данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...