HTML Purifier ломает SyntaxHighlighter

Я использую плагин SyntaxHighlighter для CKEditor, чтобы вставлять код на свои страницы. Плагин использует теги ‹pre› для содержания кода, а также использует классы «кистей» для определения языка программирования. Моя проблема заключается в том, что при отправке страницы HTML Purifier удаляет атрибут класса из тегов pre, что эффективно предотвращает подсветку синтаксиса.

Исходный код идет от:

<pre class="brush:php;">
   <?php echo '<p>Hello World</p>'; ?>
</pre>

to:

<pre>
   <?php echo '<p>Hello World</p>'; ?>
</pre>

Я надеюсь, что есть какая-то волшебная настройка, чтобы остановить HTML Purifier от этого.


person h0dges    schedule 02.05.2014    source источник
comment
Просто решил добавить, что <pre class="brush"> не изменяется.   -  person h0dges    schedule 02.05.2014


Ответы (1)


Причина в том, что brush:php не является допустимым именем класса в соответствии со спецификацией HTML4. Я думаю, вы могли бы написать свой собственный валидатор имени класса и переопределить встроенный, используя http://htmlpurifier.org/docs/enduser-customize.html

Но лучшим решением может быть запуск подсветки синтаксиса перед запуском HTML Purifier!

person Edward Z. Yang    schedule 02.05.2014