Было, делал нечто похожее.
Вот еще один вариант:
PHP код:
static void emptyLinesTrim(Args _args)
{
str tst = "\n\nстрока с пробелом\nвторая строка\n\nчетвертая строка\n\n\n";
;
BOX::info('<' + tst + '>');
tst = strReplace(tst, "\n", " "); // два пробела (или больше)
tst = strLRTrim(tst);
tst = strReplace(tst, " ", "\n"); // восстановим неконцевые переводы строк
BOX::info('<' + tst + '>');
}