Mi repsuesta a la segunda pregunta:
Para mi gusto es una tontería hacer eso. Si es un archivo de noticias muy fácilmente llegará el día en que tengas almacenadas cientos de noticias, o incluso miles.
Luego si eliminas la noticia 3 tener que renombrar 500 archivos no lo veo factible.
Yo en su lugar usaría un "listado" que contuviera los nombres de los archivos que necesitas:
Por ejemplo:
contenido de Listado.txt:
1
3
16
17
18
21
22
23
como vemos tenemos nombres salteados. se supone que hemos borrado los numeros intermedios. y modificar el contenido del archivo de texto es sumamente facil.
y ahora
Código PHP:
$nombre_archivo=file("listado.txt");
$total_archivos=count($nombre_archivo);
//en $total_archivos tienes el numero total de archivos que hay
// y en $nombre_archivo tienes un array con los nombres de los archivos (sin txt)
pero vamos, respondiendo justamente a lo que quieres,se podría ahcer así:
Código PHP:
//$archivo_a_eliminar contendráel numero de archivo, ejemplo 40.
//$total_archivos contendrá el total de archivos del directorio.
unlink($archivo_a_eliminar . ".txt");
for($i=($archivo_a_eliminar+1); $i<=$total_archivos;$i++){
copy($i . ".txt", ($i-1) . ".txt");
unlink($i . ".txt");
}