2013-01-11 13 views
5

Piszę jedną funkcję, aby uzyskać inne zapytanie do bazy danych. Teraz wszystko idzie dobrze, ale trzeba tylko pobrać ostatnią nazwę katalogu ze zdefiniowanej ścieżki.PHP: pobierz nazwę ostatniego katalogu ze ścieżki

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

Chcę uzyskać tylko docs z powyższej ścieżki. Tutaj site_root to nic innego jak $_SERVER['DOCUMENT_ROOT'] Więc jak mogę uzyskać tylko docs?

Dzięki

+3

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

+0

Dzięki, ale plik może lub nie może znajdować się w tym samym katalogu. Chodzi mi o to, że pytam jako niezbyt doświadczony. –

Odpowiedz

20

Najłatwiej byłoby użyć basename($yourpath) jak widać tutaj: http://php.net/basename

+0

ah to jest najłatwiejsze rozwiązanie, jakie znalazłem. tylko szybkie pytanie, czy będzie 3 lub 4 poziomy podrzędnego kierunku, czy nadal otrzyma nazwę ostatniego katalogu? –

+0

Tak. Zawsze ostatnia część każdej ścieżki. Bez względu na to, ile poziomów jest głębokich. Zwróci najgłębszy katalog lub nazwę pliku, jeśli jest obecny. –

+0

To jest idealne, a twoja odpowiedź zasługuje na wybraną odpowiedź. Wielkie dzięki. –

2

Spróbuj explode('/', '/learnphp/docs/') podzielić ciąg znaków w miejscach tablicy. Następnie pobierz ostatnią lokalizację.

Oto więcej informacji: http://php.net/manual/en/function.explode.php

+0

Nie zasługuje na głosowanie w dół, ponieważ jest to prawidłowe rozwiązanie: po prostu nie najlepsze. – crush

+0

Dlaczego upadki na ten temat? – Ibu

+0

To jest poprawna odpowiedź. Nie należy go odrzucać, ponieważ uważasz, że może być "lepszy" sposób. – Mattt

1

można użyć tego prostego fragmentu:

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

dzięki \ Pozwól mi spróbować. –

+0

To nie daje żadnego wyjścia –

+0

masz rację ze względu na "/" na końcu ciągu, spróbuj użyć metody basename() sugerowanej przez Tilla Helge Helwiga, która jest mądrzejszym rozwiązaniem – wezzy

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

, ale co, jeśli będzie więcej niż trzy katalogi w ścieżce. Ta tablica otrzyma zawsze katalog drugiego numeru. Poprawny? –

+0

tak dokładnie począwszy od 0 – outman

+0

TAK, powiedz na przykład, jeśli ktoś inny używa tej funkcji, niż musi ręcznie i trzeba to zmienić. Co nie jest idealne. Chcę jakiegoś rozwiązania, w którym automatycznie uzyska ostatni katalog –

1

To pomoże Ci

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

Pod odpowiedź nie działa, jeśli twój ciąg zawiera plik na końcu, na przykład:

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

daje

test.zip 

Więc jeśli ciąg zawiera plik, nie zapomnij dirname najpierw

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

daje

mypath 
+2

Idealny! Dziękuję =) –

+0

Dokładnie to, czego potrzebuję, zwykły i prosty :) –

+0

Naprawdę bardzo pomocny. Dziękuję Ci. – Adam

1

To daje aktualna nazwa katalogu : echo basename(dirname(__FILE__));

1

Jest to najprostszy sposób:

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

getcwd() = dać pełną ścieżkę katalogu basename() = daje ostatni katalog

Powiązane problemy