我正在使用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中,我必须添加margin:0px 0px -30px 40px; 标记为ol li标记,因此看起来不错,但丑陋。

我的问题归结于此; 我如何使用正则表达式在[numlist] [/ numlist]代码中查找所有线尖并将其删除?

  ask by Darius Poyer translate from so

本文未有回复,本站智能推荐: