Вывод текста с сохранением форматирования.

Игорёк

Новичок
Вывод текста с сохранением форматирования.

Мне требуется вывести тело e-mail сообщения c сохранением
форматирования. Я пробую делать это используя тэг <PRE>

<TABLE WIDTH=700>
<TD><TR>
<PRE>
...
Здесь идет тело сообщения
...
</PRE>
</TR></TD>
</TABLE>

Оказывается, что в почтовых сообщениях
целые абзацы могут быть заданы в виде одной длинной строки.
И когда эта строка выводится внутри тэга <PRE>, то
она не дробится на части, а занимает по ширине гораздо
больше, чем 700 точек (не укладывается в ширину таблицы).
Могу я как-то решить эту проблему средствами HTML,
или мне придется в PHP самому такие длинные строки
разбивать?
Или может быть есть способ вывести сообщение с сохранением
форматирования, не используя для этого тэг <PRE>?
 

Игорёк

Новичок
Автор оригинала: Maxim Matyukhin
<?=nl2br($email_message);?> пробовал ?
Так эта функция только заменяет \n на <BR>
а сама строка как была длинной, так и остается.

Кстати, нашел ошибку у себя. Правильно будет

<TABLE WIDTH=700>
<TR><TD>
<PRE>
...
</PRE>
</TD></TR>
</TABLE>

Но все-равно работает как раньше.
 

Profic

just Profic (PHP5 BetaTeam)
Блин
<TABLE WIDTH=700>
<TR><TD>
<?=nl2br($email_message);?>
</TD></TR>
</TABLE>

БЕЗ <PRE></PRE>
 

Игорёк

Новичок
А вот и не блин!

Автор оригинала: Profic
Блин
<TABLE WIDTH=700>
<TR><TD>
<?=nl2br($email_message);?>
</TD></TR>
</TABLE>

БЕЗ <PRE></PRE>
Мне нужно, чтобы сохранялось форматирование.
При таком подходе несколько пробелов объединяются
в один (при отображении).
Видимо, наилучший подход - сначала разбить
длинные строки на несколько, а потом
отобразить все в <PRE>.
Само сообщение представляет собой строку
с символами /n внутри. Как бы его просто
преобразовать, чтобы внутренние строки с /n
длиннее скажем 75 символов, разбились еще на
несколько частей символом /n (но чтобы не посередине слова)?
 

Макс

Старожил PHPClub
При таком подходе несколько пробелов объединяются
в один (при отображении).
замени пробелы на & nbsp;
длиннее скажем 75 символов, разбились еще на
несколько частей символом /n (но чтобы не посередине слова)?
function break_long_words($source_text,$lng = 75)
{
$regExp='/(\S{'.$lng.',})/ei';
$res_text=preg_replace($regExp,"wordwrap('\\1',$lng,'\n',1)",$source_text);
return $res_text;
}
 
Сверху