Я использую расширение DOM в PHP для создания некоторых HTML-документов, и я хочу, чтобы результат был отформатирован красиво (с новыми строками и отступом), чтобы он был доступен для чтения от многих тестов я сделал:PHP «pretty print» HTML (not Tidy)
- "formatOutput = истина" не работает вообще с saveHTML(), только saveXML()
- Даже если я использовал saveXML(), она до сих пор только работает над элементами, созданными с помощью DOM, а не элементами, которые входят в loadHTML(), даже с «preserveWhiteSpace = false»
Если кто-то знает по-другому, мне бы очень хотелось узнать, как они наняли его.
Итак, у меня есть документ DOM, и я использую saveHTML() для вывода HTML. Поскольку это происходит из DOM, я знаю, что это действительно так, нет необходимости «убирать» или проверять его каким-либо образом.
Я просто ищу способ получить красиво отформатированный вывод с вывода, получаемого с расширения DOM.
NB. Как вы могли догадаться, я не хочу использовать расширение Tidy как a) он делает намного больше, что мне тоже нужно (разметка уже допустима), и b) она фактически вносит изменения в содержимое HTML (например, HTML-тип и некоторые элементы).
Follow Up:
ОК, с помощью ответа ниже я работал, почему расширение DOM не работает. Хотя данный пример работает, он все еще не работал с моим кодом. С помощью комментария this я обнаружил, что если у вас есть текстовые узлы, где isWhitespaceInElementContent() истинно, форматирование не будет применяться после этой точки. Это происходит независимо от того, является ли сохранениеWhiteSpace ложным. Решение состоит в том, чтобы удалить все эти узлы (хотя я не уверен, что это может отрицательно сказаться на фактическом содержании).
Спасибо. С вашими примерами и комментариями на php.net я разработал проблему (см. Выше). –
Решение с DOM кажется мне совершенно тяжеловесным. Как быстро или медленно? Стоит ли использовать его также на небольших фрагментах или только на всей странице? – sumid
Существует проблема при использовании 'saveXML()' с некоторыми тегами без значения, например '' он преобразует его в ' 'есть ли способ, я могу это исправить? – 2014-01-06 18:25:14