2009
03.12

The Function

  func.parse_ftp_rawlist.php (1.3 KiB, 160 hits)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// :: JaZz phpFramework
// :: V1.1
// :: 13/03/2009 15:35:22
function parse_ftp_rawlist($List, $Win = false)
{
  $Output = array();
  $i = 0;
  if ($Win) {
    foreach ($List as $Current) {
      ereg('([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)', $Current, $Split);
      if (is_array($Split)) {
        if ($Split[3] < 70) {
          $Split[3] += 2000;
        }
        else {
          $Split[3] += 1900;
        }
        $Output[$i]['isdir']     = ($Split[7] == '');
        $Output[$i]['size']      = $Split[7];
        $Output[$i]['month']     = $Split[1];
        $Output[$i]['day']       = $Split[2];
        $Output[$i]['time/year'] = $Split[3];
        $Output[$i]['name']      = $Split[8];
        $i++;
      }
    }
    return !empty($Output) ? $Output : false;
  }
  else {
    foreach ($List as $Current) {
      $Spli = preg_split('[ ]', $Current, 9, PREG_SPLIT_NO_EMPTY);
      if ($Split[0] != 'total') {
        $Output[$i]['isdir']     = ($Split[0] {0} === 'd');
        $Output[$i]['perms']     = $Split[0];
        $Output[$i]['number']    = $Split[1];
        $Output[$i]['owner']     = $Split[2];
        $Output[$i]['group']     = $Split[3];
        $Output[$i]['size']      = $Split[4];
        $Output[$i]['month']     = $Split[5];
        $Output[$i]['day']       = $Split[6];
        $Output[$i]['time/year'] = $Split[7];
        $Output[$i]['name']      = $Split[8];
        $i++;
      }
    }
    return !empty($Output) ? $Output : false;
  }
}

Usage

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// set up basic connection
$conn_id = ftp_connect($ftp_server);
 
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
 
// get the file list for /
$buff = ftp_rawlist($conn_id, '/');
 
// OUR LITTLE PARSER
$a = parse_ftp_rawlist($buff, false);
var_dump($a);
 
// close the connection
ftp_close($conn_id);

  func.parse_ftp_rawlist.php (1.3 KiB, 160 hits)

Have fun!
Andreas Glaser aka JaZz

2 comments so far

Add Your Comment
  1. For http://ftp.microsoft.com this is work incorrectly for folders. Their format for folder is
    “05-09-07 12:02PM bussys”.
    In your code, the folder name is ” bussys”

  2. &lt DIR > cut