without pagina page obtener nombre name filename extension current basename archivo actual php file

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.



__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]; devuelve my_script.php


$filename = "jquery.js.php"; $ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php $file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js