HtmlPurifier, добавляющий дополнительный элемент списка ко всем спискам

Я использую bbcode parser сначала разобрать bbcode в HTML а потом я прохожу это через HtmlPurifier с конфигурацией по умолчанию и по какой-то причине он добавляет дополнительный элемент списка к моим спискам в HTML.

Вот код HTML до передается HtmlPurifier:

<strong>bold text</strong><br />
<em><strong>bold italic</strong></em><br />
<span style="text-decoration: underline"><strong>bold underline</strong></span><br />
<em><span style="text-decoration: underline"><strong>bold underline italic</strong></span></em><br />
<strong>bold striked</strong><br />
<em><span style="text-decoration: underline"><strong>bold italic underlined striked</strong></span><br />
<br />
italic text</em><br />
<br />
<span style="color: #9966ff">colored text</span><br />
<br />
<span style="text-decoration: underline"><em>italic underlined</em></span><br />
<br />
<span style="text-decoration: underline">underlined text</span><br />
<br />
<span style="text-decoration: line-through">striked text</span><br />
<br />
align left<br />
<br />
<div style="text-align: center">align center</div><br />
<br />
<div style="text-align: right"><span style="text-decoration: underline"><strong>align right bold underline</strong></span><br />
<br />
<div style="text-align: left"><a href="http://moo.com">a text link</a></div><br />
<div style="text-align: left"><a href="http://moo.com">[color=#9966ff]a colored text link[/color]</a><br />
<span style="color: #6699ff"><a href="http://moo.com">[b]a bold text link[/b]</a></span><br />
<span style="color: #333333"><br />
<span style="font-size: large"><strong>My List</strong></span></span><br />
<br />
<ul><br />
<li>Cat</li><br />
<li>Dog</li><br />
<li>Fish</li><br />
<li>Duck</li><br />
</ul><br />
<span style="font-size: large"><strong>My List 2</strong></span><br />
:)<br />
:&#039;(<br />
<ol><br />
<li><strong><span style="color: #666633">Car</span></strong></li><br />
<li><strong><span style="color: #666633">Bike</span></strong></li><br />
<li><strong><span style="color: #666633">Tram</span></strong></li><br />
<li><strong><span style="color: #666633">Bus</span></strong></li><br />
</ol><br />
<span style="font-size: large"><strong><br />
My List 3</strong></span><br />
<br />
<ol><br />
<li><a href="http://moo.com">Moo</a></li><br />
<li><a href="http://quack.com">Quack</a></li><br />
<li><a href="http://woof.com">Woof</a></li><br />
<li><a href="http://meow.com">Meow</a></li><br />
</ol><br />
</div><br />
</div><br />
<br />
<span style="font-size: large"><strong><br />
My List 4</strong></span><br />
<br />
<ul><br />
<li>Cat</li><br />
<li>Dog</li><br />
<li>Fish</li><br />
<li>Duck</li><br />
</ul>

Вот код HTML после проходит через HtmlPurifier (обратите внимание, что я отформатировал это красиво, так как он также удаляет разрывы строк)

<strong>bold text</strong><br /><em><strong>bold italic</strong></em><br /><span style="text-decoration:underline;"><strong>bold underline</strong></span><br /><em><span style="text-decoration:underline;"><strong>bold underline italic</strong></span></em><br /><strong>bold striked</strong><br /><em><span style="text-decoration:underline;"><strong>bold italic underlined striked</strong></span><br /><br />
italic text</em><br /><br /><span style="color:#9966ff;">colored text</span><br /><br /><span style="text-decoration:underline;"><em>italic underlined</em></span><br /><br /><span style="text-decoration:underline;">underlined text</span><br /><br /><span style="text-decoration:line-through;">striked text</span><br /><br />
align left<br /><br />
<div style="text-align:center;">align center</div>
<br /><br />
<div style="text-align:right;">
<span style="text-decoration:underline;"><strong>align right bold underline</strong></span><br /><br />
<div style="text-align:left;"><a href="http://moo.com">a text link</a></div>
<br />
<div style="text-align:left;">
<a href="http://moo.com">[color=#9966ff]a colored text link[/color]</a><br /><span style="color:#6699ff;"><a href="http://moo.com">[b]a bold text link[/b]</a></span><br /><span style="color:#333333;"><br /><span style="font-size:large;"><strong>My List</strong></span></span><br /><br />
<ul>
<li><br /></li>
<li>Cat<br /></li>
<li>Dog<br /></li>
<li>Fish<br /></li>
<li>Duck<br /></li>
</ul>
<br /><span style="font-size:large;"><strong>My List 2</strong></span><br />
:)<br />
:'(<br />
<ol>
<li><br /></li>
<li><strong><span style="color:#666633;">Car</span></strong><br /></li>
<li><strong><span style="color:#666633;">Bike</span></strong><br /></li>
<li><strong><span style="color:#666633;">Tram</span></strong><br /></li>
<li><strong><span style="color:#666633;">Bus</span></strong><br /></li>
</ol>
<br /><span style="font-size:large;"><strong><br />
My List 3</strong></span><br /><br />
<ol>
<li><br /></li>
<li><a href="http://moo.com">Moo</a><br /></li>
<li><a href="http://quack.com">Quack</a><br /></li>
<li><a href="http://woof.com">Woof</a><br /></li>
<li><a href="http://meow.com">Meow</a><br /></li>
</ol>
<br />
</div>
<br />
</div>
<br /><br /><span style="font-size:large;"><strong><br />
My List 4</strong></span><br /><br />
<ul>
<li><br /></li>
<li>Cat<br /></li>
<li>Dog<br /></li>
<li>Fish<br /></li>
<li>Duck<br /></li>
</ul>

Есть идеи, почему он это делает?

0

Решение

Вы передаете подобные списки HtmlPurifier:

<ul><br />
<li>Cat</li><br />
<li>Dog</li><br />
<li>Fish</li><br />
<li>Duck</li><br />
</ul><br />

Но <br /> элемент не может быть непосредственным потомком <ul> или же <ol> element: все дочерние элементы этих элементов списка должны быть <li> элементы. Итак, HtmlPurifier сворачивает <br /> элементы, которые встречаются после <li> теги в li элементы, в результате чего HTML как <li>Cat<br /></li>, Тем не менее, нет <li> тег для первого <br /> тег для свертывания, поэтому вместо него создается элемент списка.

Чтобы исправить это, вам нужно сделать так, чтобы синтаксический анализатор BBCode выводил html следующим образом:

<ul>
<li>Cat</li>
<li>Dog</li>
<li>Fish</li>
<li>Duck</li>
</ul>
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]