Hab im Web folgende Zeilen Code gefunden kann damit aber nichts anfangen. Was machen der oder die da?
sowie folgende Bemerkung dazu auf http://www.php.net/manual/de/function.ftp-rawlist.php
L8 ereg mask (directory?, size, name):
ereg("([-d])[rwxst-]{9}.* ([0-9]*) [a-zA-Z]+ [0-9: ]*[0-9]
(.+)",$dirline,$regs);
I've tried this, and it works fine if the name of the file has not a number in the first letter. for example, if I have a file named "1file.exe", it shows "file.exe"; and if I've a file named "010102.exe" it shows ".exe" only.
I've improved it by doing this:
if(ereg("([-d])[rwxst-]{9}.* ([0-9]*) ([a-zA-Z]+[0-9: ]*[0-9]) ([0-9]{2}:[0-9]{2}) (.+)",$dirline,$regs))
{
if($regs[1]=="d") $dirinfo[0] = 1;
$dirinfo[1] = $regs[2];
$dirinfo[2] = $regs[3];
$dirinfo[3] = $regs[4];
$dirinfo[4] = $regs[5];
}
$dirinfo[0] => is a directory? (1=yes)
$dirinfo[1] => file size
$dirinfo[2] => file date
$dirinfo[3] => file time
$dirinfo[4] => file name
and now works with all filename formats!
Wofür brauch ich das bei FTP Servern? Was bringt mir die Unterscheidung nach System und was soll dieses ellen lange Suchmuster in der ereg Funktion.
Das komplette Skript gibt es hier:
http://home.arcor.de/stefanernst2/Mi...en/einlese.txt
Könnte jemand mal ein paar Bemerkungen zu dem Code machen was da überhaupt geschieht. Grob kapier ichs ja aber halt net so das ich was damit anfangen könnte bzw nach meinen belieben ändern.
Mfg Markus
PHP-Code:
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;
}
L8 ereg mask (directory?, size, name):
ereg("([-d])[rwxst-]{9}.* ([0-9]*) [a-zA-Z]+ [0-9: ]*[0-9]
(.+)",$dirline,$regs);
I've tried this, and it works fine if the name of the file has not a number in the first letter. for example, if I have a file named "1file.exe", it shows "file.exe"; and if I've a file named "010102.exe" it shows ".exe" only.
I've improved it by doing this:
if(ereg("([-d])[rwxst-]{9}.* ([0-9]*) ([a-zA-Z]+[0-9: ]*[0-9]) ([0-9]{2}:[0-9]{2}) (.+)",$dirline,$regs))
{
if($regs[1]=="d") $dirinfo[0] = 1;
$dirinfo[1] = $regs[2];
$dirinfo[2] = $regs[3];
$dirinfo[3] = $regs[4];
$dirinfo[4] = $regs[5];
}
$dirinfo[0] => is a directory? (1=yes)
$dirinfo[1] => file size
$dirinfo[2] => file date
$dirinfo[3] => file time
$dirinfo[4] => file name
and now works with all filename formats!
Wofür brauch ich das bei FTP Servern? Was bringt mir die Unterscheidung nach System und was soll dieses ellen lange Suchmuster in der ereg Funktion.
Das komplette Skript gibt es hier:
http://home.arcor.de/stefanernst2/Mi...en/einlese.txt
Könnte jemand mal ein paar Bemerkungen zu dem Code machen was da überhaupt geschieht. Grob kapier ichs ja aber halt net so das ich was damit anfangen könnte bzw nach meinen belieben ändern.
Mfg Markus