Php:将扩展名附加到文件夹中没有扩展名的所有文件
我有一个名为Php:将扩展名附加到文件夹中没有扩展名的所有文件,php,append,Php,Append,我有一个名为MyFolder的文件夹,其中包含以下三个文件: file1 文件2 file3.gif file.html 我需要将扩展名“.gif”添加到没有扩展名的文件中。然后第一个file1和第二个file2文件应该成为目标 结果应该是: file1.gif file2.gif file3.gif file.html 这些文件是gif文件,但不知何故它们丢失了扩展名。如果手动添加扩展名(编辑其名称),则可以在浏览器中正确加载 我正在尝试使用以下代码: $directory = "http:/
MyFolder
的文件夹,其中包含以下三个文件:
file1
文件2
file3.gif
file.html
我需要将扩展名“.gif”添加到没有扩展名的文件中。然后第一个file1
和第二个file2
文件应该成为目标
结果应该是:
file1.gif
file2.gif
file3.gif
file.html
这些文件是gif文件,但不知何故它们丢失了扩展名。如果手动添加扩展名(编辑其名称),则可以在浏览器中正确加载
我正在尝试使用以下代码:
$directory = "http://www.example.com/MyFolder/";
if ($handle = opendir($directory)) {
while (false !== ($fileName = readdir($handle))) {
if($fileName['extension'] == ""){
$fileName = $fileName.".gif";
}
rename($directory . $fileName, $directory . $newName);
}
closedir($handle);
}
在检测到扩展名丢失后,更改重命名以添加扩展名
.gif
。您当前的代码使用了一个不存在的变量$newname
while (false !== ($fileName = readdir($handle))) {
if($fileName['extension'] == ""){
rename($directory . $fileName, $directory . $fileName . '.gif');
}
}
不幸的是,由于无法将
preg\u grep
传递到array\u walk
中,因此必须像这样拆分,否则它可能是一行
$dir='./MyFolder/';
$col=preg_grep( '@^((?!gif).)*$@i', glob( $dir . '*' ) );
array_walk( $col , function($f){
rename( $f, $f.'.gif' );
});
或者,原始版本的修改版本
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' );
}
});
$dir='c:/temp/fileuploads/1/;
$col=glob($dir.'*');
数组_walk($col,函数($f){
if(空(pathinfo($f,pathinfo_扩展))){
printf(“%s-%s
,$f,$f..gif”);
重命名($f,$f..gif');
}
});
似乎很简单-是什么代码导致了问题?注意:如果它们还没有成为gif文件,那当然不会使它们成为gif文件(我知道这似乎很明显,但可能值得注意)。@RamRaider我添加了我尝试使用的代码。@CD001这些文件是gif文件,但不知何故它们丢失了扩展名。如果手动添加扩展名(编辑其名称),则可以在浏览器中正确加载。@JPashs-请确保;)就我个人而言,我很喜欢它。我可以工作,但该函数会将“.gif”添加到所有文件中,即使它们有扩展名。然后将“file.xml”重命名为“file.xml.gif”。我只需要将“.gif”添加到没有扩展名的文件中。