我写了一个 bbcode 解析器,基本上是这样调用的:
echo nl2br(bb_parse($contents));
我正在通过使用 preg_replace_callback 而不是带有 e 修饰符的 preg_replace 来更新函数,以便为 PHP 5.4+ 做好准备。
function strip_newline($text)
{
return preg_replace("/(\r\n|\r|\n)/", "", $text);
}
bb_parse($text)
{
$text = preg_replace("/\[ul\](.*)\[\/ul\]/Usie", '"<ul class=\"forum_unordered\">".strip_newline("$1")."</ul>"', $text);
return $text;
}
我在使用 preg_replace_callback 来完成同样的事情时遇到了麻烦。
bb_parse($text)
{
$text = preg_replace_callback("/\[ol\](.*)\[\/ol\]/Usi", create_function('$matches', 'return preg_replace("/(\r\n|\r|\n)/", "", $matches);'), $text);
return $text;
}
任何帮助将不胜感激。谢谢你。
编辑
我希望解析的 bbcode 代码是这样的:
[ol]
[li]One[/li]
[li]Two[/li]
[/ol]
我的问题是我希望删除 [ol] 和 [/ol] 之间的三个换行符。在不删除换行符的情况下,输出变为:
1. One
2. Two
代替:
1. One
2. Two