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