如何在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
}