2015-04-03 34 views
0

我使用bbcode parser先解析bbcodeHTML,然後我默認的配置使其穿過HtmlPurifier,由於某種原因它前面加上一個額外的列表項到我的列表在HTML中。HtmlPurifier前面加上額外的列表項的所有列表

下面是HTML代碼以前傳遞給HtmlPurifier:正在通過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代碼後-breaks)

<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> 

任何想法爲什麼這樣做?

回答

3

你傳遞名單像這些以HtmlPurifier:

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

但是,<br />元素不能爲<ul><ol>元素的直接子:這些列表元素的所有兒童都必須<li>元素。因此,HtmlPurifier會將出現在之後的<br />元素折成<li>標籤分成,li元素,因此會生成html,如<li>Cat<br /></li>。但是,第一個<br />標記沒有<li>標記摺疊到,因此會生成一個列表項以代替它。

要解決,你就必須讓BB代碼分析器輸出HTML這樣的代替:

<ul> 
<li>Cat</li> 
<li>Dog</li> 
<li>Fish</li> 
<li>Duck</li> 
</ul> 
+0

啊好吧,是有道理的。我猜bbcode解析器正在將新行變成'
'標籤,因此這就是它們最終列在列表項上的原因。我將不得不嘗試一些其他的bbcode解析器。謝謝! – Brett 2015-04-03 14:31:29