Безопасная HTML-упаковка длинных строк

У меня проблемы с отправкой электронных писем в формате HTML с длинными строками текста. Редактор WYSIWYG (FCKEditor 2.5), используемый на сайте, продолжает удалять все символы \ n в некоторых браузерах, включая IE и Chrome. В результате получается электронное письмо с одной огромной строкой текста. Это не было бы проблемой, если бы не почтовые клиенты, которые переносят строки длиной более 998 символов, вставляя ! \ n в нем. Конечно, они почти всегда попадают в самые неудачные места, нарушение HTML-тегов и неприятный внешний вид в самом содержимом.

Моим первоначальным решением было добавить перевод строки после каждого тега HTML или каждые 900–990 символов. Это регулярное выражение, с которым я закончил:

 return preg_replace("/(<\/[^\>]+>|<[^\>]+\/>|>[^<]{900,990}\s)(\n)*/","$1\n",$str);

Однако, когда есть строки, которые вообще не содержат никаких тегов, часть сопоставления пробелов никогда не запускается. Но если я удалю > с самого начала, он начнет ломать теги.

Есть ли лучший способ, чем регулярное выражение, или можно ли это регулярное выражение вылечить?

РЕДАКТИРОВАТЬ: Предел длины строки в 1000 символов определен в RFC 821 .

6
задан Kaivosukeltaja 31 March 2011 в 11:32
поделиться