php - pagina - Obtener el nombre del archivo de script actual
php get filename without extension (15)
Si tengo un script PHP, ¿cómo puedo obtener el nombre de archivo desde ese script?
Además, dado el nombre de un script de la forma jquery.js.php
, ¿cómo puedo extraer solo la parte "jquery.js"?
Aquí está la diferencia entre el basename(__FILE__, ".php")
y el basename($_SERVER[''REQUEST_URI''], ".php")
.
basename(__FILE__, ".php")
muestra el nombre del archivo donde se incluye este código. Esto significa que si incluye este código en header.php y la página actual es index.php , devolverá el encabezado no el índice .
basename($_SERVER["REQUEST_URI"], ".php")
- Si usa incluir este código en header.php y la página actual es index.php , devolverá el índice no el encabezado .
Aquí está una lista de lo que he encontrado recientemente buscando una respuesta:
//self name with file extension
echo basename(__FILE__) . ''<br>'';
//self name without file extension
echo basename(__FILE__, ''.php'') . ''<br>'';
//self full url with file extension
echo __FILE__ . ''<br>'';
//parent file parent folder name
echo basename($_SERVER["REQUEST_URI"]) . ''<br>'';
//parent file parent folder name with //s
echo $_SERVER["REQUEST_URI"] . ''<br>'';
// parent file name without file extension
echo basename($_SERVER[''PHP_SELF''], ".php") . ''<br>'';
// parent file name with file extension
echo basename($_SERVER[''PHP_SELF'']) . ''<br>'';
// parent file relative url with file etension
echo $_SERVER[''PHP_SELF''] . ''<br>'';
// parent file name without file extension
echo basename($_SERVER["SCRIPT_FILENAME"], ''.php'') . ''<br>'';
// parent file name with file extension
echo basename($_SERVER["SCRIPT_FILENAME"]) . ''<br>'';
// parent file full url with file extension
echo $_SERVER["SCRIPT_FILENAME"] . ''<br>'';
//self name without file extension
echo pathinfo(__FILE__, PATHINFO_FILENAME) . ''<br>'';
//self file extension
echo pathinfo(__FILE__, PATHINFO_EXTENSION) . ''<br>'';
// parent file name with file extension
echo basename($_SERVER[''SCRIPT_NAME'']);
No te olvides de eliminar :)
<br>
Como algunos dijeron que basename($_SERVER["SCRIPT_FILENAME"], ''.php'')
y basename( __FILE__, ''.php'')
son buenas maneras de probar esto.
Para mí, usar la segunda era la solución para algunas instrucciones de validación que estaba haciendo.
Cuando desee que su inclusión sepa en qué archivo se encuentra (es decir, qué nombre de script se solicitó realmente), use:
basename($_SERVER["SCRIPT_FILENAME"], ''.php'')
Porque cuando escribes en un archivo por lo general sabes su nombre.
Edición: Como lo señaló Alec Teal, si usa enlaces simbólicos, mostrará el nombre del enlace simbólico.
Esto funciona para mí, incluso cuando se ejecuta dentro de un archivo PHP incluido, y desea que se ejecute el nombre de archivo del archivo php actual:
$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;
Resultado:
index.php
Esto podría ayudar:
basename($_SERVER[''PHP_SELF''])
funcionará incluso si está utilizando incluir.
La respuesta de alex es correcta, pero también puedes hacer esto sin expresiones regulares como las siguientes:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
Prueba esto
$current_file_name = $_SERVER[''PHP_SELF''];
echo $current_file_name;
Simplemente use la constante mágica de PHP __FILE__
para obtener el nombre de archivo actual.
Pero parece que quieres la parte sin .php
. Asi que...
basename(__FILE__, ''.php'');
Un removedor de extensión de archivo más genérico se vería así ...
function chopExtension($filename) {
return pathinfo($filename, PATHINFO_FILENAME);
}
var_dump(chopExtension(''bob.php'')); // string(3) "bob"
var_dump(chopExtension(''bob.i.have.dots.zip'')); // string(15) "bob.i.have.dots"
Usar las funciones estándar de la biblioteca de cadenas es mucho más rápido , como es de esperar.
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, ''.''));
}
También puedes usar esto:
echo $pageName = basename($_SERVER[''SCRIPT_NAME'']);
Una forma más general sería usando pathinfo() . Desde la versión 5.2 es compatible con PATHINFO_FILENAME
.
Asi que
pathinfo(__FILE__,PATHINFO_FILENAME)
También hará lo que necesites.
Ver http://php.net/manual/en/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
__FILE__
usa ejemplos basados en los resultados del servidor localhost:
echo __FILE__;
// C:/LocalServer/www/templates/page.php
echo strrchr( __FILE__ , ''//' );
// /page.php
echo substr( strrchr( __FILE__ , ''//' ), 1);
// page.php
echo basename(__FILE__, ''.php'');
// page
$ argv [0]
Me ha resultado mucho más sencillo usar $argv[0]
. El nombre del script de ejecución siempre es el primer elemento de la matriz $argv
. A diferencia de todos los otros métodos sugeridos en otras respuestas, este método no requiere el uso de basename()
para eliminar el árbol de directorios. Por ejemplo:
echo __FILE__;
devuelve algo como/my/directory/path/my_script.php
echo $argv[0];
devuelvemy_script.php
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js