单独的文件& PHP中的目录

时间:2011-07-02 13:00:45

标签: php

用于列出文件和目录的PHP代码。

$buff = ftp_nlist($conn_id,$dir );

$ buff是两个文件和数组的数组。目录。

有没有办法获得2个单独的数组,1个只包含文件和其他只是目录。

4 个答案:

答案 0 :(得分:3)

来自the documentation

  

directory

     

要列出的目录。 此参数还可以包含参数,例如。 ftp_nlist($ conn_id,“ - la / your / dir”);请注意,此参数未进行转义,因此文件名可能存在一些问题,其中包含空格和其他字符。

所以执行ftp_nlist两次:一次提供只给你文件的参数,然后提供只给你目录的参数。 这将依赖于FTP服务器站点的系统

或者,您可以使用使用ftp_chdir的{​​{3}}或使用ftp_size的{​​{3}}。

答案 1 :(得分:2)

您可以循环遍历数组并使用类似

的函数检查项目是否为目录
function ftp_is_dir($conn_id, $dir) {
  if (ftp_chdir($conn_id, $dir)) {
    ftp_chdir($conn_id, '..');
    return true;
  } else {
    return false;
  }
}

编辑:

另一种可能性是

<?php
function is_ftp_dir($file, $conn_id){
if(ftp_size($conn_id, $file) == '-1'){
    return true;
}else{
    return false;
}
}
?>

请注意,并非每个ftp服务器都支持ftp_size()。

答案 2 :(得分:2)

你试过ftp_rawlist()吗?此函数返回一个包含以下行的数组:

06-21-11  01:49PM       <DIR>          01
06-21-11  02:20PM       <DIR>          02
06-21-11  03:33AM                  456 default.html
06-21-11  04:59PM                  123 robots.txt

或者:

drwxr-xr-x   12 ftp      ftp          4096 Mar 25  1999 ACS
drwxr-xr-x   14 ftp      ftp          4096 Mar 18  2001 ATHENA
drwxr-xr-x    2 ftp      ftp          4096 Jul 10  1998 XNeXT
drwxr-xr-x    3 ftp      ftp          4096 Jul 10  1998 elib
drwxrwxr-x  349 ftp      ftp         98304 Jul 02 06:30 gnu
drwxr-xr-x    3 ftp      ftp          4096 Jul 10  1998 lpf
-rw-r--r--    1 ftp      ftp       3448992 Oct 16  2003 ls-lR
drwxr-xr-x    2 ftp      ftp          4096 Jul 10  1998 palladium
drwxr-xr-x    2 ftp      ftp          4096 Jul 10  1998 palladium2
drwxr-xr-x    2 ftp      ftp          4096 Jul 10  1998 virus

从现在开始,您可以使用ftp_systype()函数来确定如何解释上述回复。

或使用启发式方法,例如在Windows上,目录将包含字符串<DIR>,在Linux上,您应该找到以d开头的每个目录,后跟rwxrwxrwx之类的内容。

答案 3 :(得分:1)

可以模式匹配您需要的文件。如果您能够依赖具有扩展名和目录而没有“。”的文件。在,您可以获得所有文件名,而不是像这样:

$filenames = ftp_nlist( $conn_id, '*.*' );