Pero hay un problema con estas cosas.
------------------------------------------------------------
Con lo que pones tú:
-------------------
¿Qué pasa si hay un query string?
www.web.com/archivo.php?var1=valor1&var2=valor2
Tu script imprimirá:
archivo.php?var1=valor1&var2=valor2
¿Qué pasa si el archivo no está en el raíz sino en una subcarpeta?
Por ejemplo
www.web.com/carpeta1/archivo.php
Tu script imprimirá:
carpeta1 (y no es lo que quieres)
Con lo que pongo yo
-------------------
¿Qué pasa si el nombre de archivo contiene puntos (.)?
mi.archivo.con.puntos.php
Mi script imprimirá:
mi (cuando debería imprimir mi.archivo.con.puntos)
------------------------------------------------------------
Si necesitas sólo el nombre de archivo puedes hacer:
Código PHP:
$array_url = explode('/', $_SERVER['PHP_SELF']);
$archivo = array_pop($array_url); // nombre de archivo y extensión.
$array_archivo = explode('.', $archivo);
$archivo_extensión = array_pop($array_archivo); // Solo la extensión.
$archivo_nombre = implode('.', $array_archivo); // Nombre sin extensión.
También podrías hacer un substr() quitando los últimos cuatro caracteres, pero eso serviría sólo para extensiones de tres caracteres. Lo que te puse sirve para cualquier archivo y extensión.
Saludos