我有下面的代码列出了文件夹中的所有图片,问题是它找到了一些文件(a。和a ..),我不确定它们是什么所以我我不确定如何防止它们出现。我在 Windows XP机器上,任何帮助都会很棒,谢谢。
错误:警告:重命名(images /。,images /。)[function.rename]:没有错误 在C:\ wamp \ www \ Testing \ listPhotosA.php第14行
警告:重命名(images / ..,images / ..)[function.rename]:没有错误 第14行的C:\ wamp \ www \ Testing \ listPhotosA.php
代码:
<?php
define('IMAGEPATH', 'images/');
if (is_dir(IMAGEPATH)){
$handle = opendir(IMAGEPATH);
}
else{
echo 'No image directory';
}
$directoryfiles = array();
while (($file = readdir($handle)) !== false) {
$newfile = str_replace(' ', '_', $file);
rename(IMAGEPATH . $file, IMAGEPATH . $newfile);
$directoryfiles[] = $newfile;
}
foreach($directoryfiles as $directoryfile){
if(strlen($directoryfile) > 3){
echo '<img src="' . IMAGEPATH . $directoryfile . '" alt="' . $directoryfile . '" /> <br>';
}
}
closedir($handle); ?>
答案 0 :(得分:22)
我喜欢PHP的glob
功能。
foreach(glob(IMAGEPATH.'*') as $filename){
echo basename($filename) . "\n";
}
答案 1 :(得分:7)
glob()区分大小写,并且通配符*
将返回所有文件,因此我在此处指定了扩展名,因此您无需执行过滤工作
$d = 'path/to/images/';
foreach(glob($d.'*.{jpg,JPG,jpeg,JPEG,png,PNG}',GLOB_BRACE) as $file){
$imag[] = basename($file);
}
答案 2 :(得分:4)
使用glob函数。
<?php
define('IMAGEPATH', 'images/');
foreach(glob(IMAGEPATH.'*') as $filename){
$imag[] = basename($filename);
}
print_r($imag);
?>
你得到了阵列格式的所有图像
答案 3 :(得分:1)
使用balphp的scan_dir函数: https://github.com/balupton/balphp/blob/765ee3cfc4814ab05bf3b5512b62b8b984fe0369/lib/core/functions/_scan_dir.funcs.php
scan_dir($dirPath, array('pattern'=>'image'));
将使用$path => $filename
结构返回该路径中所有图像文件的数组以及所有子目录。要关闭扫描子目录,请将recurse
选项设置为false
答案 4 :(得分:1)
获取文件夹内所有目录和子目录中的所有jpg图像:
function getAllDirs($directory, $directory_seperator)
{
$dirs = array_map(function ($item) use ($directory_seperator) {
return $item . $directory_seperator;
}, array_filter(glob($directory . '*'), 'is_dir'));
foreach ($dirs AS $dir) {
$dirs = array_merge($dirs, getAllDirs($dir, $directory_seperator));
}
return $dirs;
}
function getAllImgs($directory)
{
$resizedFilePath = array();
foreach ($directory AS $dir) {
foreach (glob($dir . '*.jpg') as $filename) {
array_push($resizedFilePath, $filename);
}
}
return $resizedFilePath;
}
$directory = "C:/xampp/htdocs/images/";
$directory_seperator = "/";
$$allimages = getAllImgs(getAllDirs($directory, $directory_seperator));
答案 5 :(得分:0)
请使用以下代码从文件夹中读取图像。
function readDataFromImageFolder() {
$imageFolderName = 14;
$base = dirname(__FILE__);
$dirname = $base.DS.'images'.DS.$imageFolderName.DS;
$files = array();
if (!file_exists($dirname)) {
echo "The directory $dirname not exists.".PHP_EOL;
exit;
} else {
echo "The directory $dirname exists.".PHP_EOL;
$dh = opendir( $dirname );
while (false !== ($filename = readdir($dh))) {
if ($filename === '.' || $filename === '..') continue;
$files[] = $dirname.$filename;
}
uploadImages( $files );
}
}
请点击此处获取详细说明。 http://www.pearlbells.co.uk/code-snippets/read-images-folder-php/
答案 6 :(得分:0)
您可以使用面向OPP的DirectoryIterator类。
foreach (new DirectoryIterator(IMAGEPATH) as $fileInfo) {
// Removing dots
if($fileInfo->isDot()) {
continue;
}
// You have all necessary data in $fileInfo
echo $fileInfo->getFilename() . "<br>\n";
}
答案 7 :(得分:-1)
while (($file = readdir($handle)) !== false) {
if (
($file == '.')||
($file == '..')
) {
continue;
}
$newfile = str_replace(' ', '_', $file);
rename(IMAGEPATH . $file, IMAGEPATH . $newfile);
$directoryfiles[] = $newfile;
}