PHP正则表达式 - 在li之后删除断行

时间:2013-10-03 19:46:54

标签: php regex

我正在为我的网站构建一种BBCode,我目前有以下代码:

$bbcode = array(
        ...
        '#\[ul\](.*?)\[/ul\]#is' => '<ul>$1</ul>',
        '#\[li\](.*?)\[/li\]#is' => '<li>$1</li>'
    );

我的问题是,在<li>添加<br />之后,这会在列表项之间创建大量空白空间。

我可以在[li]正则表达式中添加一些可以忽略/删除之后添加的<br />的代码吗?

2 个答案:

答案 0 :(得分:0)

试试这个

$bbcode = array(
    ...
    '#\[li\]\s+(.*?)\[/li\]#is' => '<li>$1</li>'
);

答案 1 :(得分:0)

你可以分两步完成(先用br改变然后再改变):

'#\[li\](.*?)(?:<br />)(.*?)\[/li\]#is' => '<li>$1$2</li>'
'#\[li\](.*?)\[/li\]#is' => '<li>$1</li>'

或者如果br总是在li之后而没有别的:

'#\[li\](?:\s*<br />)?(.*?)\[/li\]#is' => '<li>$1</li>'
相关问题