Пробовал заменить \n внутри тега [
html][/
html] на временную строчку: lRkN5a1Bk0QHC32hWWsp - почти сработало. Но моя регулярка заменяет только первый попавшийся \n, а не все. Как сделать чтобы заменяла все - я не знаю.
<?php
$text = preg_replace("'\[html\](.*?)\n(.*?)\[\/h tml\]'is", "\[html\]\\1lRkN5a1Bk0QHC32hWWsp\\2\[\/html\] ", $text);
$text = str_ireplace("\n", "<br>", $text);
$text = str_replace("lRkN5a1Bk0QHC32hWWsp", "\n", $text);
?>