删除具有正则表达式的内容之间的换行符

时间:2011-12-11 20:54:03

标签: php regex

我正在使用正则表达式和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并删除它们?

0 个答案:

没有答案