ftp_nlist
のFTPフォルダ内のすべてのファイルを取得したいと思います。FTPフォルダ内のファイルを変更時刻でソートする方法
しかし、デフォルトでは名前でソートされた配列が返されます。
最後に変更した時刻で並べ替えることができます。私は-lt
をフォルダパスの前に追加しようとしましたが、各ファイル名の前に日付時刻を追加するだけです。
私を助けてください!
ftp_nlist
のFTPフォルダ内のすべてのファイルを取得したいと思います。FTPフォルダ内のファイルを変更時刻でソートする方法
しかし、デフォルトでは名前でソートされた配列が返されます。
最後に変更した時刻で並べ替えることができます。私は-lt
をフォルダパスの前に追加しようとしましたが、各ファイル名の前に日付時刻を追加するだけです。
私を助けてください!
FTPサーバーに(または任意の)基準に従ってファイルを並べ替える標準的な方法はありません。
一部のFTPサーバー、特にProFTPDおよびvsftpdは、LIST
/NLST
コマンドで独自のフラグをサポートしているため、エントリを並べ替えることができません。
これらのサーバーは、更新時刻でファイルをソートする-t
フラグをサポートして両方:
LIST -t
これは非標準的なだけではありませんが、それは実際にFTPプロトコルに違反します。 vsftpdは唯一のProFTPDのと同じ意味を持つ-a
、-r
、-t
、-F
と-l
をサポートしていることを
http://www.proftpd.org/docs/directives/linked/config_ref_ListOptions.html
注:
は、ProFTPDのがサポートするすべてのオプションについては、manページを参照してください。
サーバが-t
スイッチ(または類似)をサポートしていない場合、あなたの唯一のオプションがあるように、ファイル属性を持つリストを取得し、ローカルにソートすることです。
ftp_nlist
は、ファイル名のみを返すため、使用できません。
ftp_rawlist
を使用できます。独自のファイルリストを返すが、それは解析するのが難しいかもしれない。しかし、特定のサーバーのみをサポートする必要がある場合は、そのサーバーの解析をハードコーディングできます。
一般的な解決策が必要な場合は、信頼できるマシンで読み取り可能なディレクトリ一覧を返すFTPコマンドMLSD
を使用するのが理想的です。しかし、PHPはそれをサポートしていません。
MLSD
の実装はftp_rawlist
コマンドのユーザーのコメントにあります:
https://secure.php.net/manual/en/function.ftp-rawlist.php#101071
ありがとうございます、私は自分のFTPサーバーがその機能をサポートしていないと思います。 –
私はそれらをローカルで並べ替えるよ –
ええ、これは最終的な答えだ –
私はあなたが使用する必要があるとしている賭け:http://php.net/manual/en/function.ftp -rawlist.phpを開き、手動で解析してソートします。 – mkaatman