Pues de donde siempre, del manaul

. Si te fijas al final de preg_replace() (
www.php.net/preg_replace), te pone este ejemplo:
<?php
preg_replace ("/(<\/?)(\w+)([^>]*>)/e",
"'\\1'.strtoupper('\\2').'\\3'",
$html_body);
?>
Sabiendo lo que son el \\1, \\2 y \\3 y experimentando un poco, se llega al codigo que puse yo
(7<strlen('\\1'))?substr('\\1',0,7):'\\1'
Bueno, he de reconocer que soy un poco "tramposo". Como pensaba que no iba a permitir varias lineas de codigo, me aproveche de mi querido operador ternario (
http://www.php.net/manual/en/languag...comparison.php), que me permite tener un if...else... en una sola linea.
Ya sabes, "Mas sabe el zorro por viejo que por zorro"
Saludos.