Я использую CKEditor редактор wysiwyg для веб-сайта, где пользователям разрешено использовать HTML-редактор для добавления комментариев. В итоге у меня был очень избыточный вложенный HTML-код в моей базе данных, который замедляет просмотр/редактирование этих комментариев.
У меня есть комментарии, похожие на это (это очень маленький пример. У меня есть комментарии с более чем 100 вложенными тегами):
<p>
<strong>
<span style="font-size: 14px">
<span style="color: #006400">
<span style="font-size: 14px">
<span style="font-size: 16px">
<span style="color: #006400">
<span style="font-size: 14px">
<span style="font-size: 16px">
<span style="color: #006400">This is a </span>
</span>
</span>
</span>
</span>
</span>
</span>
<span style="color: #006400">
<span style="font-size: 16px">
<span style="color: #b22222">Test</span>
</span>
</span>
</span>
</span>
</strong>
</p>
Мои вопросы:
-
Есть ли библиотека/код/программное обеспечение, которое может выполнять интеллектуальную (то есть форматированную) очистку HTML-кода, удаляя все избыточные теги, которые не влияют на форматирование (поскольку они переопределены по внутренним тегам)? Я пробовал много существующих онлайн-решений (таких как HTML Tidy). Никто из них не делает то, что я хочу.
-
Если нет, мне нужно написать код для разбора и очистки HTML. Я планирую использовать PHP Simple HTML DOM, чтобы пройти через дерево HTML и найти все теги, которые не имеют никакого эффекта. Вы предлагаете любой другой парсер HTML, который более подходит для моей цели?
Спасибо
.
Update:
Я написал код для анализа кода HTML, который у меня есть. Все теги HTML, которые у меня есть:
-
<span>
со стилями дляfont-size
и/илиcolor
-
<font>
с атрибутамиcolor
и/илиsize
-
<a>
для ссылок (сhref
) -
<strong>
-
<p>
(отдельный тег для обертывания всего комментария) -
<u>
Я могу легко написать код для преобразования HTML-кода в bbcode (например, [b]
, [color=blue]
, [size=3]
и т.д.). Поэтому я над HTML станет чем-то вроде:
[b][size=14][color=#006400][size=14][size=16][color=#006400]
[size=14][size=16][color=#006400]This is a [/color][/size]
[/size][/color][/size][/size][color=#006400][size=16]
[color=#b22222]Test[/color][/size][/color][/color][/size][/b]
Теперь вопрос: есть ли простой способ (алгоритм/library/и т.д.) очистить грязный (такой грязный, как этот оригинальный HTML) bbcode, который будет сгенерирован?
еще раз спасибо