我的服务器上已经存在名称中带有空格的文件。 我想用下划线重命名它们。 我尝试在空格前加一个斜杠,并尝试用%20替换空格。 PHP仍然给我:
No such file or directory.
这是我的代码:
$dir = './';
$dhandle = opendir($dir);
$old_files = array();
if ($dhandle) {
while (false !== ($fname = readdir($dhandle)))
{
if ( ($fname != '.') && ($fname != '..') )
{
$old_files[] = (is_dir("./$fname" )) ?"(Dir) {$fname}" : $fname;
}
}
closedir($dhandle);
}
$new_files = str_replace(' ', '_', $old_files);
$x = 0;
foreach($old_files as $file)
{
rename(rawurlencode($file), $new_files[$x++]);
}
如果您不尝试重命名,您确定不会出现此类文件错误吗?调试的一个很好的第一步是简化问题,直到问题不再存在。
我不能告诉您是否这样做,因为起初它没有运行,但是您绝对不应该在本地文件名上使用
if ( ($fname != '.') && ($fname != '..') && !is_dir("./$fname" ))
{
$old_files[] = $fname;
}
但是,您还应该意识到,
is_dir($dir.'/'.$fname);
和
rename($dir.'/'.$file,$dir.'/'.$new_files[$x++]);
我曾经产生了一个快速的技巧,以清理一些名称不正确的文件。这是我的代码;如果需要,请使用它。
<?php
$dir = './';
$dhandle = opendir($dir);
$old_files = array();
if ($dhandle) {
while (false !== ($fname = readdir($dhandle))) {
if ( ($fname != '.') && ($fname != '..') && !is_dir("./$fname" ))
$old_files[] = $fname;
}
closedir($dhandle);
}
foreach($old_files as $file)
{
$new_name = str_replace(',', '', str_replace('&', '', str_replace(' ','',$file)));
rename("./".$file,"./".$new_name);
echo $new_name."\
";
}
添加:
print"$file\
";
在重命名语句之前,先查看您得到的内容。
另外,在将文件添加到数组之前,应在if语句中添加strstr($ fname,''),以便仅对包含空格的文件名进行操作:
if ( ($fname != '.') && ($fname != '..') && !is_dir("./$fname" ) && strstr($fname, ' '))
{
$old_files[] = $fname;
}
以上就是短码网小编为大家整理的《使用PHP重命名带空格的文件》相关内容,希望大家喜欢。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!
《使用PHP重命名带空格的文件》文档下载仅供参考学习,下载后请在24小时内删除。
转载注明出处:https://www.duanma.net/article/b4e8bc1d756.html