note 13095 deleted from function.ftp-rawlist by cmb

From: Date: Sun, 04 Aug 2019 08:40:13 +0000
Subject: note 13095 deleted from function.ftp-rawlist by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-211778@lists.php.net to get a copy of this message
Note Submitter: php at smintman dot com ---- An example script for rekursiv directory analysis ... interesting are the ereg functions for spliting the content based on the system type... (http://beben.lanparty.de/smint/ftp_rekdiranalys.phps) <?php function analysedir($dirline) { global $systyp,$ftp_server,$stop; if(ereg("([-dl])[rwxst-]{9}",substr($dirline,0,10))) { $systyp = "UNIX"; } if(substr($dirline,0,5) == "total") { $dirinfo[0] = -1; } elseif($systyp=="Windows_NT") { if(ereg("[-0-9]+ *[0-9:]+[PA]?M? +<DIR> {10}(.*)",$dirline,$regs)) { $dirinfo[0] = 1; $dirinfo[1] = 0; $dirinfo[2] = $regs[1]; } elseif(ereg("[-0-9]+ *[0-9:]+[PA]?M? +([0-9]+) (.*)",$dirline,$regs)) { $dirinfo[0] = 0; $dirinfo[1] = $regs[1]; $dirinfo[2] = $regs[2]; } } elseif($systyp=="UNIX") { if(ereg("([-d])[rwxst-]{9}.* ([0-9]*) [a-zA-Z]+ [0-9: ]*[0-9] (.+)",$dirline,$regs)) { if($regs[1]=="d") $dirinfo[0] = 1; ?> $dirinfo[1] = $regs[2]; $dirinfo[2] = $regs[3]; } } if(($dirinfo[2]==".")||($dirinfo[2]=="..")) $dirinfo[0]=0; // array -> 0 = switch, directory or not // array -> 1 = filesize (if dir =0) // array -> 2 = filename or dirname return $dirinfo; } function rekdir($dir) { global $conn_id,$filetyps,$exectyps,$ftp_server,$banlist,$size,$ssize; echo "<b>$dir</b><br>"; $dirlist = ftp_rawlist($conn_id,""); for($i=0;$i<count($dirlist);$i++) { $dirinfo = analysedir($dirlist[$i]); if($dirinfo[0]==1) { $newdir = "$dir/$dirinfo[2]"; if(($dirinfo[2]=="~")||(substr($dirinfo[2],0,1)==" ")) $chdir=ftp_chdir($conn_id,$newdir); else $chdir=ftp_chdir($conn_id,$dirinfo[2]); $stop = 0; // for($k=0;($k<count($banlist))&&(!$stop);$k++) { // if(strpos($newdir,$banlist[$k])!=0) $stop=1; // } if(!$stop && $chdir) { rekdir($newdir); } if(!ftp_chdir($conn_id,$dir)) ftp_cdup($conn_id); } elseif($dirinfo[0]==0) { echo "$dirinfo[2]<br>"; $size += $dirinfo[1]; } } } $conn_id = ftp_connect($ftp_server); $login_result = @ftp_login($conn_id, $user, $password); if ($login_result) { $real_systyp = ftp_systype($conn_id); $systyp = $real_systyp; echo "scanning... $systyp<br>"; rekdir(""); ftp_quit($conn_id); }

« previous php.notes (#211778) next »