2009-06-26 9 views
30

Bu basit bir soru olmalı, ancak ilgili API'yi hatırlayamıyorum. "combine directory name php" terimiyle Google'da yapılan bir arama sonuç vermez. Yani sanırım hem kendim hem de programlama topluluğunu bu soruyu sorarak bir hizmet yapıyorum.PHP'de Dizin ve Dosya Adlarını Birleştirin (Net içinde Path.Combine eşdeğeri)

PHP'de tam dosya yolunu oluşturmak için dizin ve dosya adı nasıl birleştirilir? Dizin adının "D:\setup program" olduğunu ve dosya adının "mj.txt" olduğunu varsayalım. Metod, "D:\setup program\mj.txt" adresinde beni iade etmelidir. Tabii ki yöntem, Linux'ta veya diğer işletim sistemlerinde doğru dosya yolunu döndürmelidir.

.Net ile ilgili işlev Path.Combine'dur, ancak PHP'de, daha önce görmüş olmama rağmen bunu hatırlayamadım.

cevap

33
$filepath = $path . DIRECTORY_SEPARATOR . $file; 

PHP yeni sürümlerinde o zaman bölü kullanın için gayet böylece eğik çizgi, hangi yol olduğunun önemi olmamasına rağmen.

realpath() kullanarak doğru bir mutlak yol alabilirsiniz, bu ayrıca gereksiz gereksiz bölü çizgileri gibi şeyleri kaldıracak ve ../ gibi başvuruları çözecektir. Yol geçerli değilse false döndürecektir.

+0

PHP üzerinde eğik çizgi kabul sanmıyorum Pencerelerin PHP ile ilgisi vardır. Kabuk/kaşifte daha yeni Windows sürümlerinde eğik çizgi girebilirsiniz. – soulmerge

+1

''. DIRECTORY_SEPARATOR. 'foo.txt', göreceli bir yolu mutlak yola dönüştürecektir. – Dwayne

+1

$ dosya zaten mutlak bir yol ise? Path.Combine bununla ilgilenir, ancak basit dize birleştirme olmaz. – yoyo

0

Sadece php sabiti DIRECTORY_SEPARATOR ile birleştirebilir veya yalnızca eğik çizgi kullanabilirsiniz. , Windows muhtemelen D = sakıncası olmaz

+3

$ folderPath '/' ile bittiğinde işe yaramaz - bu nedenle oluşturulan yol "/ var/somepath // fileName" olur. – Dai

8

Ben işlevini artı DIRECTORY_SEPARATOR sabiti katılmak kullanarak olurdu yapmak için en temiz ve esnek bir yol düşünüyorum:

$fullPath = join(DIRECTORY_SEPARATOR, array($directoryPath, $fileName)); 
İlgili konular