2013-01-11 2 views
5

Sto scrivendo una funzione per ottenere una query di database diversa. Ora le cose stanno andando bene, ma solo bisogno di ottenere l'ultimo nome della directory dal percorso definito.PHP: Ottieni l'ultimo nome della directory dal percorso

$qa_path=site_root('/learnphp/docs/'); 

Desidero ottenere solo docs dal percorso sopra. Qui site_root non è altro che $_SERVER['DOCUMENT_ROOT'] Quindi, come posso ottenere solo docs?

Grazie

+3

vedi: http://php.net /manual/en/function.basename.php – ficuscr

+0

Grazie, ma il file può o non può nella stessa directory. Intendo solo chiedendo come non così esperto. –

risposta

20

modo più semplice sarebbe quella di utilizzare basename($yourpath) come potete vedere qui: http://php.net/basename

+0

ah questa è la soluzione più semplice che ho trovato. solo una domanda veloce se ci saranno 3 o 4 sotto livello di direzione otterrà comunque l'ultimo nome della directory? –

+0

Sì. Sempre la parte del cognome di qualsiasi percorso. Non importa quanti livelli sia profondo. Restituirà la directory più profonda o il nome file, se presente. –

+0

Questo è perfetto e la tua risposta merita di essere selezionata risposta. Molte grazie. –

2

Prova explode('/', '/learnphp/docs/') di dividere la stringa in posizioni di array. Quindi recupera l'ultima posizione.

Ecco ulteriori informazioni: http://php.net/manual/en/function.explode.php

+0

Non merita un voto negativo in quanto è una soluzione valida: non solo la migliore. – crush

+0

Perché i downvotes su questo? – Ibu

+0

Questa è una risposta valida. Non dovrebbe essere votato perché pensi che ci possa essere un modo "migliore". – Mattt

1

è possibile utilizzare questo semplice frammento:

$qa_path=site_root('/learnphp/docs/'); 
$qa_path = explode("/", $qa_path); 
$qa_path = $qa_path[count($qa_path) - 1]; 
+0

grazie \ Fammi provare. –

+0

Questo non sta dando alcuna uscita –

+0

hai ragione a causa della "/" alla fine della stringa, prova ad usare il metodo basename() suggerito da Till Helge Helwig che è una soluzione più intelligente – wezzy

1
$qa_path=explode('/', '/learnphp/docs/'); 
echo $qa_path[2]; // output docs 
+0

ma cosa succede se ci sarà più di tre directory nel percorso. Questo array otterrà sempre la directory del secondo numero. Corretta? –

+0

sì esattamente a partire da 0 – outman

+0

Quindi, per esempio, se qualcun altro usa questa funzione di quello che devono andare manualmente e devono modificare questo. Che non è l'ideale Voglio qualche soluzione dove otterrà automaticamente l'ultima directory –

1

Questo vi aiuterà a

$qa_path=site_root('/learnphp/docs/'); 
$q_path = explode ("/", $qa_path); 
$lastV = end($q_path); 
16

risposta fornita non funziona se la stringa contiene il file alla fine, ad esempio:

basename('/home/mypath/test.zip'); 

test.zip 

Quindi, se la stringa contiene il file, non dimenticate di dirname per primo

basename(dirname('/home/mypath/test.zip')); 

mypath 
+2

Perfetto! Grazie =) –

+0

Esattamente quello che mi serve, semplice e semplice :) –

+0

Davvero molto utile. Grazie. – Adam

1

Questo ti dà il nome della directory corrente : echo basename(dirname(__FILE__));

1

Questo è il modo più semplice:

<?php 
    echo basename(getcwd()); 
?> 

getcwd() = dare il vostro percorso completo della directory basename() = darvi ultima directory