Nasıl PHP kullanarak bir dosyanın uzantısı değiştirebilirsiniz?

6 Cevap php

Nasıl PHP kullanarak bir dosyanın uzantısı değiştirebilirsiniz?

Ex: photo.exe için photo.jpg

6 Cevap

Ben küçük harfe bir galeri Withing tüm görüntüleri uzantıları değiştirmek için bu gerekli. Ben aşağıdaki yapıyor sona erdi:

// Converts image file extensions to all lowercase
$currentdir = opendir($gallerydir);
while(false !== ($file = readdir($currentdir))) {
  if(strpos($file,'.JPG',1) || strpos($file,'.GIF',1) || strpos($file,'.PNG',1)) {
    $srcfile = "$gallerydir/$file";
    $filearray = explode(".",$file);
    $count = count($filearray);
    $pos = $count - 1;
    $filearray[$pos] = strtolower($filearray[$pos]);
    $file = implode(".",$filearray);
    $dstfile = "$gallerydir/$file";
    rename($srcfile,$dstfile);
  }
}

Bu benim amaçlar için çalıştı.

Modern işletim sistemlerinde, dosya adları çok iyi, örneğin, uzun dosya uzantısından önce dönemleri içerebilir:

my.file.name.jpg

PHP, bunu dikkate alır sonra sadece yeni uzantısı eklemek uzantısı olmadan dosya adını bulmak için bir yol sağlar:

function replace_extension($filename, $new_extension) {
    $info = pathinfo($filename);
    return $info['filename'] . '.' . $new_extension;
}
substr_replace($file , 'png', strrpos($file , '.') +1)

Ne istediğinizi herhangi bir uzantısını değişecektir. İstediğiniz uzantısı olacağını hiç ne png değiştirin.

Eğer bir dize dosya var, ilk seçtiğiniz bir uzantısı ile uzantısını değiştirmek için regex kullanabilirsiniz. İşte o yapacağım küçük bir fonksiyonu var:

function replace_extension($filename, $new_extension) {
    return preg_replace('/\..+$/', '.' . $new_extension, $filename);
}

Sonra yeni dosya adı ile dosyayı yeniden adlandırmak için rename() işlevini kullanın.

Sadece regexp ile değiştirin:

$filename = preg_replace('"\.bmp$"', '.jpg', $filename);

Ayrıca diğer görüntü uzantıları kaldırmak için bu kodu uzatabilirsiniz, sadece bmp değil:

$filename = preg_replace('"\.(bmp|gif)$"', '.jpg', $filename);