我正在使用正则表达式和php中的preg_replace()函数编写BB代码解码器和编码器。
我主要使用这种类型的正则表达式,其作品非常好
$text = preg_replace("/\[b\](.*)\[\/b\]/", "<strong>\\1</strong>", $text);
我的问题在于列表,我在BB代码中将它们写成这样:
[numlist]
[*]number list
[*]number list
[*]number list
[/numlist]
但是因为我在我的编码器函数的末尾使用了nl2br(),BB代码在那里生成了很多额外的br标签,在这些代码上调用这些替换函数之后;
$text = preg_replace("/\[numlist\](.*)\[\/numlist\]/sm", "<ol class='pol'>\\1</ol>", $text);
$text = preg_replace("/\[\*\](.*)/", "<li>\\1</li>", $text);
我最终得到了这个:
<ol class='pol'><br />
<li>number list<br />
</li><br />
<li>number list<br />
</li><br />
<li>number list<br />
</li><br />
</ol><br />
所以在我的CSS现在我必须添加保证金:0px 0px -30px 40px;对于ol li标记所以它看起来正确,但它只是丑陋。
我的问题归结为此;如何使用正则表达式查找[numlist] [/ numlist]代码中的所有linebeaks并删除它们?