Вопрос

Я недавно ввел HTML в некоторые RSS-каналы, которые публикую (которые до сих пор имели только простой текст, без разметки), и мне было интересно, какой метод лучше: использовать кодировку символов (например, htmlspecialchars) или просто инкапсулировать все в CDATA?

Мне кажется, что CDATA может быть проще, но мне неясно, могут ли быть какие-либо причины (тонкие или иные) для выбора одного подхода по сравнению с другим. (Для начала, подход CDATA будет легче читать при просмотре источника ...)

Это было полезно?

Решение

CDATA для любых данных, которые не должны анализироваться анализатором XML. Любые теги, не входящие в блок CDATA , будут проанализированы анализатором XML и могут иметь другое значение.

CDATA также может нести нагрузку на анализаторы, если в этом нет необходимости. Старайтесь избегать блоков CDATA всякий раз, когда вы знаете, что HTML (или иным образом) не будет использоваться, в противном случае используйте его.

Тем не менее, я согласен с jamesh в том, что вы всегда должны отдавать предпочтение Atom, а не RSS. Я создаю программу чтения каналов, а при очистке каналов всегда предпочитаю Atom, а не RSS.

Другие советы

Лично CDATA проще, так как позволяет отображать фактический HTML подписчиком без необходимости делать что-то смешное для читателя.

Если вы используете кодировку HTML, читатель подписчиков или сам веб-сайт должен декодировать источник для отображения HTML-кода

С риском дать вам ответ, который вы, возможно, не захотите услышать: используйте Atom вместо RSS.

Atom - это красивый XML-файл с пространством имен, так что вы можете смешивать и сочетать XHTML, не беспокоясь о проблеме кодирования, о которой вы спрашиваете.

Он в значительной степени поддерживается везде, где есть RSS, и, поскольку это просто ванильный Atom, проще накатить свою собственную, если вы действительно не хотите использовать библиотеку для управления ею.

Atom также является стандартом IETF, а RSS - нет.

htmlentities () работает как шарм. Не нужно использовать CDATA. http://php.net/manual/en/function.htmlentities.php

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top