2013-01-11 39 views
5

Farklı veritabanı sorgusu almak için bir işlev yazıyorum. Şimdi işler iyi gidiyor, ancak sadece son dizin adını tanımlanmış yoldan almamız gerekiyor.PHP: Yoldan son dizin adını al

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

Yukarıdaki yoldan yalnızca docs almayı başardım. Burada site_root, $_SERVER['DOCUMENT_ROOT']'dan başka bir şey değildir. Peki, sadece docs'u nasıl alabilirim? http://php.net/basename

+3

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

+0

Teşekkürler ama dosya aynı dizinde olabilir veya olmayabilir. Demek istediğim o kadar tecrübeli değil. –

cevap

20

kolay yolu basename($yourpath) kullanmak olacaktır. Sonra son yeri getir. İşte

fazla bilgi geçerli: http://php.net/manual/en/function.explode.php

+0

ah Bu bulduğum en kolay çözüm. Sadece hızlı bir soru varsa 3 veya 4 alt seviye olacaksa hala dizin ismini alacak mı? –

+0

Evet. Her zaman herhangi bir yolun soyadı parçası. Ne kadar çok derin olursa olsun. Varsa, en derin dizini veya dosya adını döndürür. –

+0

Bu mükemmel ve cevabınız cevabın seçilmesini hak ediyor. Çok teşekkürler. –

2

explode('/', '/learnphp/docs/') dizi konumlara dize bölmek deneyin: Burada gördüğünüz gibi

Teşekkür

+0

Geçerli bir çözüm olduğundan aşağı oylamayı hak etmiyor: sadece en iyisi değil. – crush

+0

Neden bu düşüşler? – Ibu

+0

Bu geçerli bir cevaptır. Aşağı inilmemelisiniz çünkü "daha iyi" bir yol olabileceğini düşünüyorsunuz. – Mattt

1

bu basit pasajı kullanabilirsiniz:

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

Teşekkürler, şunu deneyeyim. –

+0

Bu, –

+0

çıktısını vermiyor çünkü dizenin sonunda "/" olduğundan haklısınız, Till Helge Helwig tarafından önerilen daha akıllı bir çözüm olan – wezzy

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

olan basename() yöntemini kullanmayı deneyin. yoldaki üç dizinden daha fazla. Bu dizi her zaman ikinci sayı dizini alır. Doğru? –

+0

evet tam olarak 0 – outman

+0

'dan başlayarak SO, örneğin, bu işlevi başka bir kişi el ile gitmek zorunda kaldıklarından ve bunu değiştirmek zorunda kaldıklarından bahseder. Hangisi ideal değil. Otomatik olarak son dizini alacağı bir çözüm istiyorum –

1

Bu

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

Sağlanan cevap eğer çalışmaz yardımcı olacaktır dizenin sonunda dosya şu gibi:

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

dize dosya varsa bu sizi verir

mypath 
+2

Mükemmel! Teşekkür ederim =) –

+0

Tam olarak ne ihtiyacım var, sade ve basit :) –

+0

Gerçekten çok yararlı. Teşekkür ederim. – Adam

1

test.zip 

Yani, ilk

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

verir dirname unutmayın verir geçerli dizin adı : echo basename(dirname(__FILE__));

1

Bu en kolay yoludur:

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

getcwd() = tam dizin yolunu basename (vermek) = son dizini size