Bir görüntü seçin yoksa dizin var kontrol edin ve

4 Cevap

Ben şimdiye kadar, hangi mükemmel bu kodu var ama orada bir yerde bir dizin olmak dayanır:

    $path = '/home/sites/therealbeercompany.co.uk/public_html/public/themes/trbc/images/backgrounds/'.$this->slug;
$bgimagearray = array();
$iterator = new DirectoryIterator($path);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile() && !preg_match('\.jpg$/', $fileinfo->getFilename())) {
        $bgimagearray[] = "'" . $fileinfo->getFilename() . "'";
    }
}

Dizinine varsayılan yoksa görüntüleri plan dizinin kök oturdu ki ben üstünde biraz çalışmak gerekiyor ...

Herhangi bir yardım mutluluk duyacağız.

4 Cevap

İstediğiniz is_dir. Lütfen sümüklüböcek dizini test, ve bu yoksa, bunun yerine kök plan dizini kullanır.

Dir olup olmadığını görmek için is_dir kullanın ve değilse, (komut dosyası çalışıyorsa) akım yoluna $ yolunu ayarlamak

if (!is_dir($path)) {
    $path = $_SERVER["PATH_TRANSLATED"];
}

Ben çok tehlikeli $ yol başka bir yerde kullanılmaz olacak varsayılmıştır :)

(Is_dir iyidir, teşekkürler!)

DirectoryIterator atacağım bir UnexpectedValueException yolu açılamaz, böylece bir try/catch bloğunun içine çağrıyı sarın ve daha sonra kök yolu çare zaman. Bir fonksiyonu:

function getBackgroundImages($path, $rootPath = NULL)
{
    $bgImages = array();
    try {
        $iterator = new DirectoryIterator($path);
        // foreach code
    } catch(UnexpectedValueException $e) {
        if($rootPath === NULL) {                
            throw $e;
        }
        $bgImages = getBackgroundImages($rootPath);
    }
    return $bgImages;
}

Ama tabii file_exists veya is_dir geçerli bir seçenek de vardır.

Ayrıca dizine kontrol etmek için file_exists işlevini kullanabilirsiniz.