これは ルートの一覧なので、対話式で階層を順番に読み出す必要があります。
<?php error_reporting( E_ALL & ~E_NOTICE ); session_cache_limiter('nocache'); session_start(); header( "Content-Type: application/json; charset=utf-8" ); $server = "ftpサーバ"; $path = ""; $userpwd = "ユーザ:パスワード"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL,"ftp://{$server}{$path}"); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_FTP_SSL, CURLFTPSSL_ALL); curl_setopt($curl, CURLOPT_USERPWD, $userpwd); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $error = 0; $result = curl_exec($curl); if ( !$result ) { $data = array(); $error = 1; exit(); } else { $data = explode("\r\n", rtrim( $result ) ); foreach( $data as $value ) { $col = preg_split( "/\s+/", $value ); $namecol["flg"] = $col[0]; $namecol["size"] = $col[4]; $namecol["date"] = "{$col[5]} {$col[6]} {$col[7]}"; $namecol["name"] = $col[8]; $file[] = $namecol; } } // *************************** // JSON データ作成 // *************************** $json = new stdClass; $json->row = $file; // 行データ $json->status = $error; // エラー print json_encode( $json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ); ?>
テスト結果
{ "row": [ { "flg": "drwx---r-x", "size": "512", "date": "Sep 4 16:08", "name": "." }, { "flg": "drwxr-xr-x", "size": "3072", "date": "Sep 4 21:31", "name": ".." }, { "flg": "-rw-r--r--", "size": "773", "date": "Jan 7 2009", "name": ".cshrc" }, { "flg": "-rw-r--r--", "size": "258", "date": "Jan 2 2009", "name": ".login" }, { "flg": "-rw-r--r--", "size": "167", "date": "Jan 2 2009", "name": ".login_conf" }, { "flg": "-rw-r--r--", "size": "3", "date": "Jun 28 13:35", "name": ".my.version" }, { "flg": "-rw-r--r--", "size": "762", "date": "Jan 7 2009", "name": ".profile" }, { "flg": "-rw-r--r--", "size": "980", "date": "Jan 2 2009", "name": ".shrc" }, { "flg": "drwx------", "size": "512", "date": "May 10 10:31", "name": ".spamassassin" }, { "flg": "drwx------", "size": "512", "date": "Mar 13 2009", "name": ".ssh" }, { "flg": "drwx------", "size": "1024", "date": "May 10 14:09", "name": "MailBox" }, { "flg": "drwx------", "size": "512", "date": "Mar 13 2009", "name": "db" }, { "flg": "-rw-------", "size": "21098", "date": "Jun 16 10:35", "name": "dead.letter" }, { "flg": "drwxr-xr-x", "size": "2048", "date": "Jul 15 2004", "name": "fml" }, { "flg": "drwxr-xr-x", "size": "512", "date": "Aug 10 05:43", "name": "lightbox" }, { "flg": "-rw-r--r--", "size": "865", "date": "Apr 27 11:22", "name": "nam.php" }, { "flg": "drwx------", "size": "512", "date": "Sep 4 16:08", "name": "ports" }, { "flg": "drwxr-xr-x", "size": "512", "date": "Jun 14 09:53", "name": "sakura_pocket" }, { "flg": "drwxr-xr-x", "size": "512", "date": "May 18 11:06", "name": "tmp" }, { "flg": "drwxr-xr-x", "size": "1024", "date": "Sep 6 15:56", "name": "www" } ], "status": 0 }
結果
— 夜歩き@DAZStudio (@sworc) 2017年9月8日
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
を追加すると、最後の 1 は無くなる pic.twitter.com/2dFBmTjPWj