PHP-分解/移动/文件名


PHP - Exploding / Moving / Filename

不知道你是否能帮上忙,我是php的新手,我被卡住了。我有很多文件看起来像这样:

2014-04-01 NS122345-日期,人员的首字母缩写和那里的员工代码。

我希望能够将具有NS或JB或GA的文件移动到相关的文件夹/目录中。因此,对于NS,它将进入Nathan Saunders文件夹,而JB则进入Joe Bailey文件夹。

一些人对我说,使用爆炸和子字符串来拆分文件名,然后我想在数组中搜索。有人说要用这个:

$array = explode(' ', $filename); 
$firstTwoLetters = string substr ($array[1], 0, 2);

但是我得到了变量filename没有定义的错误。

不幸的是,我一无所知。我已经搜索了一个又一个论坛,一个接一个帖子,到目前为止我已经想出了这个:

if(JFile::exists($searchpath .DS. '.doc')){
    JFile::move($searchpath .DS. '.doc', JPATH_BASE .DS. 'upload' .DS. 'Nathan' .DS. '.doc'); }

我的目录结构如下:

root/wan/upload - Where files/images/docs are stored. Inside upload folder i have:
>2014-04-08 NS6565.doc
>2012-01-03 JB8932.doc
>2013-02-01 GA5434.doc
>etc
root/wan/administrator/components/com_upload - where my code is stored

问题是,我有数百万个这样的文件,并且我上面给出的例子开始时的日期会随着每个文件而改变。

我试着把它们放进一个数组中,但不确定如何从那里分割/调用正确的一个放在正确的文件夹中:

尝试-阵列

$dir    = JPATH_BASE . DS . "upload";
$basename = basename($dir);
$array = scandir($dir);
$filename = basename($dir[0]);
print_r($array);
print_r($basename);

非常感谢您的帮助。或者,如果你能给我介绍一些例子/文档,那就太好了。

感谢

假设DS是DIRECTORY_SEPARATOR

$dir    = JPATH_BASE . DS . "upload";
$folders = array('NS'=>'/path/to/Nathan/Saunders/Folder','JB'=>'/path/to/Joe/Bailey/folder');
$files  = scandir($dir);
foreach($files AS $file){
    if(!is_file($dir.DS.$file)){ continue; }
    $array = explode(' ', $file);
    if(count($array)<2){ continue; }
    $firstTwoLetters = substr($array[1], 0, 2);
    if(!empty($folders[$firstTwoLetters])){
        rename($dir.DS.$file,$folders[$firstTwoLetters].DS.$file);
    }
}