Vale, pensaba que lo unico que querias era que no se descuadraran las tablas.
Bueno, una pequeña mirada a preg_replace() (
www.php.net/preg_replace) y haciendo un par de pruebas, he sacado esto:
<?php
$texto="hola 123456789 dfdsfs dsfsdfsdfsdfsdfsd.\ndfsdfsdfsdfsdfsdfsdfsdfs. dfsd\n123";
$nuevo=preg_replace("/(\w+)/e","(7<strlen('\\1'))?substr('\\1',0,7):'\\1'",$te xto);
echo "Original:<br><br>".nl2br($texto).'<br><br>';
echo "Modificado:<br><br>".nl2br($nuevo).'<br><br>' ;
?>
Usando el modificador 'e' se puede poner codigo PHP en la expresion a poner. El (\w+) es para seleccionar palabras. Y la expresion nueva es codigo PHP usando el valor codigo por la primera expresion en \\1.
No se si servira para todos los casos de chorraras que puedan tener.
Espero que te sirva.
Suerte.
<editado>La etiqueta [ PHP ] con expersiones regulares se come \.</editado>