• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

Php ile dosya uzantısını bulmak

Konuyu Okuyan Kişiler (0)

ByTRiSLaSiS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
133
Beğeniler
0
Konum
İstanbul
#1
Bazen upload fonksiyonu yazarken veya dosya işlemleri ile uğraşırken dosya uzantısını almamız gerekebilir

Bu gibi durumlarda sizlere kesin sonucu veren bir fonksiyondan bahsedicem, önce anlatmak istediğim fonsiyondan bir örnek vereyim ve diğer sitelerden örnekler ile ne demek istediğimi anlatmaya çalışayım arkdaşlar

uzantı almak için substr,strtolower,explode,preg_match gibi fonksiyonlarla uğraşmayalım



Örnek Kod
PHP:
$Info = pathinfo("filename.exe");
echo "<pre>";
print_r($Info);
echo "</pre>";
Çıktısı
PHP:
Array
(
    [dirname] => .
    [basename] => filename.exe
    [extension] => exe
    [filename] => filename
)

Başka Sitelerden Örnekler


//Örnek 1
PHP:
<?
function uzantiBul($isim) {
    $dizi = explode('.',$isim);
    $eleman = count($dizi) -1;
    $uzanti = $dizi["$eleman"];
    echo $uzanti;
    // return $uzanti;
}

uzantiBul("asdsad.asd.php"); # çıktı : php

?>

//Örnek 2
PHP:
$uckarakterliuzanti = substr ("dosyaadimiz.uzn", -4);

Başka Bir Siteden Alıntıdır...
sonuc : .uzn olarak çıkacaktır.

ancak bu fonksiyon çoğu zaman geçerli olmayabiliyor yani bir upload scripti hazırladınız diyelim karşıdan .torrent yada .jpeg uzantılı bir dosya gönderdiklerinde uzantıyı yanlış alacaktır.

bu gibi durumlarda izlenecek yöntemlerden akla ilk gelen yöntem gelen dosya bilgisini “.” karakteri merkezine göre bölerek en son parçayı uzantı kabul etmek

$dosya = "sagopa kajmer - vasiyet .mp3";
$parcalabehcet = explode(".",$dosya);
$soneleman = count($parcalabehcet)-1;
$uzanti = $parcalabehcet[$soneleman];

görüldüğü gibi bu yöntem ile 3 değişken ve 3 satır harcayarak uzantımızı bulduk, peki bu işi daha kolay halledebilen yöntemler yok mu ? elbette var;

$uzanti = strtolower(strrchr($dosya,'.'));

bu yöntem dosya değişkenini sondan “.” karakterine kadar okur ve o kısmı uzanti değişkeni içerisine döker.

$uzanti = end(explode(".",$dosya));

bu yöntem ise başta uzun yoldan yaptığımız işlemi php fonksiyonları ile kısaltarak “.” karakterini merkez alarak dosya ismini parçalar son parçayıda uzanti değişkeni içerisine basar.


Yani örnekte dosya uzantısı almak aslında okadar zor değil

benim sık kullandığım yöntem budur arkadaşlar

PHP:
$Info = pathinfo("filename.exe");
echo "<pre>";
print_r($Info);
echo "</pre>";
PHP:
echo $Info['extension'];
ayrıca pathinfo(); fonksiyonunu domain dizin parçalama yöntemlerinde kullanabilirsiniz...

Örnek
PHP:
$Info = pathinfo("www.phpogreniyorum.com");
echo "<pre>";
print_r($Info);
echo "</pre>";

Çıktısı
PHP:
Array
(
    [dirname] => .
    [basename] => www.phpogreniyorum.com
    [extension] => com
    [filename] => www.phpogreniyorum
)
şimdi arkadaşalar pathinfo(); gibi bir fonksiyon varken kasmaya gerek varmıdır ?
eger pathinfo yetersiz derseniz lütfen belirtin :)