El problema q tienes es que file() lee un archivo si .. pero en un array (separados elementos por saltos de linea q tenga el archivo) .. No es una cadena lo q obteienes al usar file() ..
Fijate lo q dice el manual de PHP en la definición de la función:
Cita: Reads entire file into an array (PHP 3, PHP 4 )
array file ( string filename [, int use_include_path] )
http://www.php.net/manual/en/function.file.php
Para volcar tu archivo a una cadena deberias usar implode() .. con eso "concatenas" todos los elementos del array en una cadena de caracteres .. usando como delimitador de elementos en este caso '' (nada):
Código PHP:
$noticia=implode('',file("../noticias/$dir/$archivo.txt"));
Lo demas estaría correcto ahora .. ya q tu $noticia es un string (cadena).
Un saludo,