Ich würde <pre> nur verwenden, wenn der Text wirklich so angezeigt werden soll, wie er kommt, z.B. die Ausgabe von Kommandozeilen-Tools. Wenn es nur um die Zeilenumbrüche geht, nimm doch lieber str_replace um nacheinander "\r\n" und "\n" (in dieser Reihenfolge) durch "<br>" zu ersetzen.
PS: Wenn du sowieso schon den Style "white-space: pre-wrap" usw. nimmst, wieso verwendest du dann überhaupt noch das <pre>-Tag? Das kannst du doch direkt auf das <td> anwenden...
Mehr dazu: http://de.selfhtml.org/css/eig…srichtung.htm#white_space
Das Problem ist, dass <pre> zu viele Formatierungen mitbringt, die du anscheinend gar nicht willst (z.B. überschreibst du ja auch wieder die Schriftart), dann nimm auch kein <pre>. Merke: (X)HTML-Tags sind dazu da, den Inhalt zu gliedern, für das Layout ist immer CSS zuständig. (Deswegen würde ich an deiner Stelle auch die Attribute wie width="..." durch CSS ersetzen.)