Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多个目录中搜索PHP文件_Php - Fatal编程技术网

在多个目录中搜索PHP文件

在多个目录中搜索PHP文件,php,Php,php新手。我需要搜索ftp服务器上的多个目录,并根据它们的日期(包含在每个文件的名称中)下载其中包含的文件。到目前为止,我遇到了数组到字符串转换的问题-希望您能看到我在这里“尝试”做什么,并可能能够帮助我 <?php $url = ' MY FTP SERVER'; $user = ' USERNAME '; $pass = ' PASSWORD'; $target = 'LOCAL DIRECTORY'; $connection = ftp_connect($url) or d

php新手。我需要搜索ftp服务器上的多个目录,并根据它们的日期(包含在每个文件的名称中)下载其中包含的文件。到目前为止,我遇到了数组到字符串转换的问题-希望您能看到我在这里“尝试”做什么,并可能能够帮助我

<?php
$url = ' MY FTP SERVER';
$user = ' USERNAME '; 
$pass = ' PASSWORD';

$target = 'LOCAL DIRECTORY';


$connection = ftp_connect($url) or die ("Could not connect to $url");
$loginBool = ftp_login($connection, $user, $pass);
    if ($loginBool)
    {
        echo "Connected as $user at $url";
    }else{
        echo "Could not connect as $user";
    }
ftp_chdir($connection, 'MOVE ONE FOLDER IN');
$ftpDirectories = ftp_nlist($connection, ".");
for($i=0; $i < (count($ftpDirectories)); $i++){
    $directory = ("/MAIN DIR/$ftpDirectories[$i]/");
    echo $directory;
    ftp_chdir($connection, $directory);
    echo ftp_nlist($connection, $directory);
    }

?>

在我看来,逻辑如下:

获取存储在数组中的主文件夹下的所有文件夹的列表

循环遍历数组的每个元素(ftp上的文件夹)并更改为目录

一个接一个

打印文件(这样我就知道它的工作原理)

我还需要补充的是:

更改为目录后,将文件名拆分为一个数组,并与

今天的日期->如果文件名日期[索引]==今天的日期,则下载

谢谢你的帮助

编辑


但是您试图
回显ftp\u nlist()
,然后PHP抱怨将数组转换为字符串以进行回显输出。如果要检查内容,请使用类似于
print\r(ftp\u nlist($connection,$directory);
的方法,也可以将它们单独循环
foreach(ftp\u nlist($connection,$directory)作为$item){echo$item;}
可能更接近您所描述的意图打印出文件,这样我就知道了它的工作原理,因为我正在循环更改目录如何将数组索引添加为字符串?-这样我就可以说/Main Dir/folder 1然后/Main Dir/folder 2->这就是我试图通过使用$directory=(“/Main Dir/$ftpDirectories[$i]/”)实现的目标;在这种情况下,我将切换到该目录..(抱歉,如果我解释得不好的话)假设您没有多个级别的目录嵌套,
$directory=(“/MAIN DIR/$ftpDirectories[$I]/”)中已有的内容
在for循环中似乎可以工作。我建议的
foreach
将用于最内层,以替代
echo ftp\u nlist()
你能发布一个目录内容的示例,以及最终应该下载哪些文件的示例吗?我在原始帖子中留下了一个编辑-我只需要快速制作一个假的ftp,这样你就可以看到我在尝试做什么。我需要下载你在整个目录中看到的每个文本文件(针对我的主要问题进行了适当的设置)。我最终重新阅读了您的评论,并将foreach循环放置在正确的位置,现在遇到了一些失败,但这是朝着正确方向迈出的一步!对此我非常感谢!
<?php
$url = 'pmike86.zxq.net';
$user = 'pmike86_zxq'; 
$pass = '******';

$target = 'C:\Folder\\';


$connection = ftp_connect($url) or die ("Could not connect to $url");
$loginBool = ftp_login($connection, $user, $pass);
    if ($loginBool)
    {
        echo "Connected as $user at $url";
    }else{
    echo "Could not connect as $user";
    }
ftp_chdir($connection, 'HW');
$ftpDirectories = ftp_nlist($connection, ".");
for($i=0; $i < (count($ftpDirectories)); $i++){
    $directory = ("/HW/$ftpDirectories[$i]/");
    echo $directory;
    ftp_chdir($connection, $directory);
    foreach (ftp_nlist($connection, $directory) as $item) 
    { 
    ftp_get($connection, $target, $item, FTP_BINARY); 
    } 
}
?>