note 13095 deleted from function.ftp-rawlist by cmb
| From: | cmb@php.net | 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);
}