下面的评论告诉我,我的代码中存在功能错误。问题已更新以匹配。
所以我有一个正则表达式找到bb样式引用并用块引用替换它们。
$text = preg_replace("/\[quote(?:=\"(\w+?)\")?]/", '<blockquote class="quote"><div class="quotee">\1 says:</div>', $text);
$text = preg_replace("/\[\/quote\]/m", '</blockquote>', $text);
它工作正常(它在while循环中获取递归引号),但稍后,我使用nl2br。但是,我不想在blockquote之后添加br,所以我想在模式之后立即删除换行符,但我所做的一切都没有用。
我试过了:
/\[\/quote\][\r\n]?/ms
/\[\/quote\][\r\n]*/ms
/\[\/quote\][\r\n]{0,2}/ms
/\[\/quote\](?:[\r\n]|\r\n)?/ms
有什么建议吗?
答案 0 :(得分:1)
尝试使用像这样的工具,为我创造奇迹:)
答案 1 :(得分:1)
试试这个。不要使用/../ sm
任何修饰符(s包含在正则表达式中)
修改 - 添加了尾部空格表达式
# '/(?s)\[quote(?:="(.*?)")?\](.*?)\[\/quote\][^\S\r\n]*[\r\n]*/'
(?s)
\[quote
(?:
=
"
( .*? ) # (1)
"
)?
\]
( .*? ) # (2)
\[\/quote\]
[^\S\r\n]*
[\r\n]*