К сожалению, потому что вы не можете передать preg_grep
в array_walk
, это пришлось разделить следующим образом, иначе это могла бы быть одна строка.
$dir='./MyFolder/';
$col=preg_grep( '@^((?!gif).)*$@i', glob( $dir . '*' ) );
array_walk( $col , function($f){
rename( $f, $f.'.gif' );
});
Или модифицированная версияoriginal
if( $handle = opendir( $directory ) ) {
while( false !== $filename = readdir( $handle ) ) {
if( !is_dir( $filename ) ) {
$file = $directory . $filename;
if( empty( pathinfo( $file, PATHINFO_EXTENSION ) ) ){
rename( $file, $file . '.gif' );
}
}
}
closedir($handle);
}
Как и в оригинале, приведенном выше, успешно переименованы файлы с расширениями, отличными от gif, более простая версия без неисправного регулярного выражения, кажется, работает нормально.
$dir='c:/temp/fileuploads/1/';
$col=glob( $dir . '*' );
array_walk( $col, function( $f ){
if( empty( pathinfo( $f, PATHINFO_EXTENSION ) ) ){
printf('%s - %s<br />',$f,$f.'.gif');
rename( $f, $f.'.gif' );
}
});