如何在PHP选项卡中只获取图像


How to get only image in PHP tab

如何在php中只获取图像(jpg,png)?因为它返回了我的.DS_Store文件。我想我必须更改"foreach"?

<?php
    $tabFich = array();
    $iterator = new DirectoryIterator("img/travaux/renovation/mini/");
    foreach ($iterator as $fileinfo) {
        if ($fileinfo->isFile()) {
            $tabFich[ $fileinfo->getCTime()] = $fileinfo->getFilename();
        }
    }
    ksort( $tabFich);
    $firstFichier = reset( $tabFich );
    $dernierFichier = end( $tabFich );
?>
        <img src="img/travaux/renovation/mini/<?php echo $dernierFichier; ?>"/>
        <img class="second" src="img/travaux/renovation/mini/<?php echo $firstFichier; ?>"/>
        <div class="text">
            <p>Rénovation de villas</p>            
        </div>
    </a>
</li>

项包含一个DirectoryIterator::getExtension()方法,该方法提供迭代器中当前项的扩展。

您也可以通过选中DirectoryIterator::getExtension()跳过"点文件"(...),并通过选中DirectoryIterator::isFile()DirectoryIterator::isDir()跳过目录(正如您已经做的那样)。

这样的东西应该让你开始:

$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif']; // add / remove extensions to your liking
$iterator = new DirectoryIterator("img/travaux/renovation/mini/");
foreach ($iterator as $fileinfo) {
    if (!$fileinfo->isFile() || !in_array($fileinfo->getExtension(), $allowedExtensions, true)) continue;
    // rest of your code here
}

这假设您已经实际验证了您的图像,并且您的图像具有正确的扩展名。延期可以而且将是骗子。

或者,您可以使用exif_imagetype()来检查它是否是实际图像(无论扩展名如何):

// add / remove types to your liking
$allowedTypes = [
    IMAGETYPE_GIF,
    IMAGETYPE_JPEG,
    IMAGETYPE_PNG,
];
$iterator = new DirectoryIterator("img/travaux/renovation/mini/");
foreach ($iterator as $fileinfo) {
    if (!$fileinfo->isFile() || !in_array(@exif_imagetype($fileinfo->getPathname()), $allowedTypes, true)) continue;
    // rest of your code here
}