2012-06-22 19 views
22

He hecho bastante para buscar esto, así que lo siento si esto es un engaño.
De todos modos, necesito obtener el nombre de la carpeta en la que se encuentra el archivo actual. Por ejemplo, quiero convertir algo como example.com/folder/subfolder/file.php en subfolder.
Mi código actual es dirname($_SERVER['PHP_SELF']), pero eso devuelve /folder/subfolder en lugar de subfolder. ¡Gracias!Obtener la carpeta principal del archivo actual PHP

Respuesta

47

La forma más simple es:

basename(__DIR__); 

http://php.net/manual/en/language.constants.predefined.php

+2

¿No debería marcarse esto como la respuesta correcta? '$ _SERVER ['PHP_SELF']' puede devolver el archivo que incluye "el archivo actual". El "archivo actual" es __DIR__ ¿verdad? ¿O me falta algo? – taylorcressy

+0

@taylorcressy parece que la respuesta anterior se dio antes que esta ... también realmente no usamos la constante mágica –

+2

@MarcelDjaman Entiendo por qué la otra fue marcada como correcta. Simplemente estoy aclarando que esta es la respuesta correcta REAL. Técnicamente, la primera respuesta no es correcta en todos los casos (es decir, en un archivo incluido) – taylorcressy

-5

Simplemente use .. es un acceso relativo que significa la carpeta principal.

+0

Lo sé, pero quiero obtener el nombre de la carpeta, no acceder a la carpeta. – Andrey

+2

Ajá, haz lo que quieras pero esto claramente levantaría una bandera roja si tuviera que contratarte. Puede hacer un diseño adecuado sin depender de todo el sistema de archivos; solo su pertinencia –

36

es necesario combinar el código existente utilizando dirname() con una llamada a basename():

$parent = basename(dirname($_SERVER['PHP_SELF'])); 
4

dirname() se utiliza con basename() funcionaría ... También esto si desea llegar a todos ellos:

$folders = explode ('/', $_SERVER['PHP_SELF']); 

Ahora $ folders contendría una matriz de todos los nombres de las carpetas.

Saludos.

+1

Si hace esto uno debe tener cuidado con el elemento vacío en el índice 0 que resultará de una ruta que comienza con '/' – DaveRandom

+0

Buen punto, gracias por agregar esa idea. –

+0

@DaveRandom ¡Otra razón para hacer pruebas antes de poner el código en funcionamiento! :) Pero sí, si eso molesta a alguien, supongo que la única otra forma sería usar expresiones regulares. – kiradotee

2
$folder = basename(dirname(__FILE__)); 
0
str_replace('/','',$_SERVER[REQUEST_URI]); 

Resultados:
lib/imágenes /index.php

imágenes

Cuestiones relacionadas