Hoşgeldiniz!

Kayıt olarak, topluluğumuzun diğer üyeleri ile görüşebilir, paylaşabilir ve özel mesaj gönderebileceksiniz.

Şimdi Kayıt Ol!

php path combine

snow

Administrator
Yönetici
Katılım
11 Ağu 2019
Mesajlar
11
Beğeniler
8
#1
php dilinde dizinleri doğru şekilde oluşturulup yığın oluşmadan düzenlenmesi için iki yolu birleştiren fonksiyonlar sıklıkla kullanılır.

iki farklı yol birleştirlirken birden fazla farklı ifade ile karşılaşılabilir. farklı durumların oluşması sistemin aksamasına hatalı işlemler oluşmasına hatta sistem açığı oluşmasına bile sebep olabilir. Bu sebeple iyi düşünülmüş ve en çok ihtimali göz önünde bulunduran fonksiyonlar kulanılmalıdır.

Kod:
function path($base, $com = null, $isReal = false)
  {
    if(substr($base, -1)!=DIRECTORY_SEPARATOR) $base.=DIRECTORY_SEPARATOR;
    if($com) $base.=$com;
    $base = preg_replace('/(\/+|\\\\+)/', DIRECTORY_SEPARATOR, $base);
    while(preg_match('/(\/[\w\s_-]+\/\.\.)/', $base)){
      $base = preg_replace('/(\/[\w\s_-]+\/\.\.)/', "", $base);
      if(preg_match('/\/\.\.\//', $base))
        throw new \Exception("Error directory don't have parent folder!", 1);
    }
    if($isReal){
      $base = realpath($base);
      if(is_dir($base)) $base .= DIRECTORY_SEPARATOR;
    }
    return $base;
  }
örnek çıktılar ve kullanımlar aşağıdaki gibidir.

Kod:
var_dump(path("www///system", "Combine/../"));
// string(11) "www/system/"

var_dump(path("System", "Combine/../", true));
// string(40) "/home/snow/Desktop/localhost/www/System/"

var_dump(path("System", "Combine", true));
// string(48) "/home/snow/Desktop/localhost/www/System/Combine/"

var_dump(path("System", "Combine/notPath", true)); // eğer belirtilen dizin yoksa false ile dönüş yapar
// bool(false)

var_dump(path("System", "Combine/class.Combine.php", true)); // sadece klasör değil dosya dizinlerinide seçebilirsiniz
//string(65) "/home/snow/Desktop/localhost/www/System/Combine/class.Combine.php"

var_dump(path("/home/testuser\\badPath///////repair"));
// string(30) "/home/testuser/badPath/repair/"
 
Üst Alt