potresti fare una cosa di questo tipo: prendi l'immagine, controlli se la larghezza è maggiore di 400, ed in caso affermativo metti come width la larghezza prefissata.
codice:preg_match("/\[IMG\](.*?)\[\/IMG\]/i", $testo, $ris); $temp=getimagesize($ris[1]); if ($temp[0] > 400) $testo = preg_replace("/\[IMG\](.*?)\[\/IMG\]/i", "<img src=\"\\1\" width=\"400\" />", $testo); else $testo = preg_replace("/\[IMG\](.*?)\[\/IMG\]/i", "<img src=\"\\1\" />", $testo);