Php BBCode列表和regex

Php BBCode列表和regex,php,regex,bbcode,Php,Regex,Bbcode,我有一个bbcode用于这样的列表: [list] [*]First item[] [*]Second item[] [*]Third item[] [/list] 那应该像那样被替换掉 <ul> <li>First item</li> <li>Second item</li> <li>Third item</li> </ul> 为此: <ol> <l

我有一个bbcode用于这样的列表:

[list]
  [*]First item[]
  [*]Second item[]
  [*]Third item[]
[/list]
那应该像那样被替换掉

<ul>
  <li>First item</li>
  <li>Second item</li>
  <li>Third item</li>
</ul>
为此:

<ol>
  <li>One</li>
  <li>Two</li>
</ol>
现在我使用这个正则表达式:

'/\[\*\](.*?)\[\]/' -> '<li>$1</li>'
'/\[list\](.*?)\[\/list\]/' -> '<ul>$1</ul>'
'/\[list\=1\](.*?)\[\/list\]/' -> '<ol>$1</ol>'

这个正则表达式的问题在于它不检查列表项li是否在列表ul或ol中。我如何修复它?

为什么这是一个问题?a的html代码对于两种列表类型都是相同的,这对于列表来说也是有点奇怪的BBcode标记。为什么不想使用现有的实现?支持通用语法对用户更友好。Ben,问题是li有可能不在1这样的列表中。Mario,我用这个:那里的bbcode实现就是这样的。
'/\[\*\](.*?)\[\]/' -> '<li>$1</li>'
'/\[list\](.*?)\[\/list\]/' -> '<ul>$1</ul>'
'/\[list\=1\](.*?)\[\/list\]/' -> '<ol>$1</ol>'