我有一个关于文件句柄的问题,我有:
文件: “Mark,123456,HTCOM.pdf”
“John,409721,JESOA.pdf
文件夹:
“Mark,123456”
“Mark,345212”
“Mark,645352”
“John,409721”
“John,235212”
“John,124554”
我需要一个例程来将文件移动到正确的文件夹中。 在上面的例子中,我需要比较文件和文件夹中的第一个和第二个值。如果是相同的我移动文件。
补充发布: 我有这个代码,工作正常但我需要修改以检查名称和代码来移动文件... 我很难实现功能...
$pathToFiles = 'files folder';
$pathToDirs = 'subfolders';
foreach (glob($pathToFiles . DIRECTORY_SEPARATOR . '*.pdf') as $oldname)
{
if (is_dir($dir = $pathToDirs . DIRECTORY_SEPARATOR . pathinfo($oldname, PATHINFO_FILENAME)))
{
$newname = $dir . DIRECTORY_SEPARATOR . pathinfo($oldname, PATHINFO_BASENAME);
rename($oldname, $newname);
}
}
答案 0 :(得分:0)
作为粗略草稿,只适用于您的具体案例(或遵循相同命名模式的任何其他案例),这应该有效:
<?php
// define a more convenient variable for the separator
define('DS', DIRECTORY_SEPARATOR);
$pathToFiles = 'files folder';
$pathToDirs = 'subfolders';
// get a list of all .pdf files we're looking for
$files = glob($pathToFiles . DS . '*.pdf');
foreach ($files as $origPath) {
// get the name of the file from the current path and remove any trailing slashes
$file = trim(substr($origPath, strrpos($origPath, DS)), DS);
// get the folder-name from the filename, following the pattern "(Name, Number), word.pdf"
$folder = substr($file, 0, strrpos($file, ','));
// if a folder exists matching this file, move this file to that folder!
if (is_dir($pathToDirs . DS . $folder)) {
$newPath = $pathToDirs . DS . $folder . DS . $file;
rename($origPath, $newPath);
}
}