У меня проблемы с отправкой электронных писем в формате 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 .