我需要有关PHP中文件操作的帮助。 我有4个已知名称和UNKNOWN扩展名的文件。 像那样:
Y923BBBB.E120506
Y924BBBB.E120606
Y925BBBB.E120706
Y926BBBB.E120806
并且文件扩展名每天都在变化。 我如何剪切或剥离文件扩展名的每个文件,以便只保留这样的名称:
Y923BBBB
Y924BBBB
Y925BBBB
Y926BBBB
有人有想法吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
使用strrpos查找最后一个.
和substr,以便仅获取到该点的子字符串。要查找文件并重命名,请使用glob和rename:
foreach(glob('*') as $f) {
if ($f == '.' || $f == '..') continue;
$stripped = substr($f, 0, strrpos($f, '.'));
rename($f, $stripped);
}
答案 2 :(得分:1)
请注意glob('*')
在Windows和Linux(compare with answer)上的工作方式不同。如果您想要更稳定的代码,请使用DirectoryIterator
。还有一个provides the needed functions already来处理文件扩展名并且不会破坏 - 如本例所示 - 当文件内部没有点时。并使用rename
进行实际处理,使用glob
仅返回文件名,rename
将其作为完整路径处理,您将文件移动到您可能不想移动的位置。< / p>
foreach(new DirectoryIterator('.') as $f) {
/* @var $f splFileInfo*/
if (!$f->isFile()) continue;
($ext = strlen($f->getExtension())) && $ext++;
if (!$ext) continue;
$path = $f->getRealPath();
rename($path, substr($path, 0, -$ext));
}
保重。您应该始终注意重命名操作。每个与文件系统相关的操作和更改它都需要更加小心,比如说只读程序。