2011-07-02 28 views
2

ファイルとディレクトリのリストに使用されるPHPコード。PHPのファイルとディレクトリを分離

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

$ buffは両方のファイル&ディレクトリの配列です。

2つの別々の配列を取得する方法はありますか?1にはファイルと他のディレクトリだけが含まれています。

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

ので、予めご了承ください

別の可能性は次のようになります。アイテムは

function ftp_is_dir($conn_id, $dir) { 
    if (ftp_chdir($conn_id, $dir)) { 
    ftp_chdir($conn_id, '..'); 
    return true; 
    } else { 
    return false; 
    } 
} 

はEDIT

のような機能を使用して、ディレクトリがあるwheter

+0

いいえ、ftp_nlist名前のみの1つのリストを返すものはディレクトリやファイルであれば、あなたが言うことができません。 FTP URLラッパー(http://php.net/manual/en/wrappers.ftp)を調べるとよいでしょう。phpでは 'is_dir()'をサポートしています。 http://www.php.net/manual/en/function.ftp-rawlist.phpも参照してください。 – hakre

答えて

2

あなたは、配列をループでチェックすることができますすべてのftpサーバがftp_size()をサポートしているわけではありません。 the documentationから

3

directory

ディレクトリがリストされます。 このパラメータには、引数も含めることができます。 ftp_nlist($ conn_id、 "-la/your/dir");このパラメータはエスケープされないので、スペースやその他の文字を含むファイル名には問題がある可能性があることに注意してください。

したがって、ファイルを与える引数を指定してから、ディレクトリのみを与える引数を指定すると、ftp_nlistを2回実行します。 これは、FTPサーバーサイトが存在するシステムに依存します。

また、this more verbose solutionを使用すると、ftp_chdir、またはthis oneを使用すると、ftp_sizeを使用することができます。

2

あなたはftp_rawlist()を試しましたか?前方あなたは上記の応答を解釈する方法を決定するためにftp_systype()機能を使用することができ、この点から

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 

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 

または:この関数は次のように行を含む配列を返します。

またはヒューリスティックを使用してください。 Windowsの場合、ディレクトリには文字列<DIR>が含まれます.Linuxでは、dで始まる各ディレクトリと、それに続くrwxrwxrwxという文字列があります。

1

必要なファイルにパターンマッチングすることができます。拡張子とディレクトリを持つファイルに依存することができます。単にそのようむしろあなたはすべてのファイル名を取得することができ、中:

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

関連する問題