Gibi bir şey:
/directory/a/b - /directory/ = a/b
Kolayca bunu yapmak mümkün mü?
Eğer yolları ile çalışıyoruz beri, platform hassasiyet önemlidir; Genelde Windows diğer platformlarda daha farklı bir yol ayırıcı vardır, ve yeniden kod yazmak için bir platformu hiçe olamaz.
PHP yolları ile başa çıkmak için birkaç işlevleri vardır. Eğer ~foo/bar//bitty/../index.php
, kullanmak gibi gerçekten garip bir yolunu teslim ediyorsanız realpath
a> sizin için o kadar temiz.
$path = realpath("~foo/bar//bitty/../index.php");
/* output: /home/foo/bar/index.php */
: Başlı başına bir dosya yolunu bölümünü almak için, örneğin kullanın dirname
a> - Diğer fonksiyonlar size yardımcı olacak
print dirname($path);
/* output: /home/foo/bar */
Eğer ayırıcılar bölünmüş ve istediğiniz her türlü işi yapmak, o var bir kere. Gerçek numara sizin için yollar tüm garabeti hakkında PHP endişe olan, ve sonra sadece ayrı ayrı her bölümü ile çalışıyor. pathinfo
and basename
a> de içine bak. Ben bu değil ne kadar aptal dize değiştirmeleri yapmak, soran ne olduğunu düşünüyorum.
Uygulama için enjeksiyon izin vermiyor unutmayın! Web girişinden yolları ile çalışmak tehlikelidir. Kullanıcı girişi asla güvenme.
Dirname () funciton ve özgün yolu kesip parçaları alabilirsiniz bazı dizeleri kullanma.
<?php
// from: http://php.net/manual/en/function.dirname.php
$path = "/dirname/a/b";
$dir = dirname(dirname($path));
echo "dir at front=$dir\n";
$len = strlen($dir);
$dirname = substr ( $path, 0, $len+1 );
echo "dirname=$dirname\n";
$last_2 = substr ( $path, $len+1 );
echo "last_2=$last_2\n";
?>
Sonuçları
$ php x.php
dir at front=/dirname
dirname=/dirname/
last_2=a/b