PHP Raw-listing Problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi there everyone,
First of all, let me thank you for your always-present help in this list; I (as a newbie) appreciate it very much! :)
However, pardon me for I need to trouble you with another piece of text that doesn't do what it should do:
I need to parse the raw-listing of an FTP into it's parts (the code comes from the book published by Wrox, however, I don't have the book in my posession to check the two versions against each other), but it returns an empty list. Here is the code:
[code]
switch ($this->systype){ //Parse raw dir listing into fields
 case 'Windows_NT':  //Handle WinNT FTP servers
 $re = '/^.' .
 '([0-9-]+\s+)'.   //Get last mod date
 '\d\d:\d\d..)\s+' .  //Get last mod time
 '(\S+)\s+' .    //Get size or dir info
 '(.+)$/';    //Get file/dir name
 break;
 
 case 'UNIX':   //Handle UNIX FTP servers
 default:    //case UNIX falls through to default
  $re = '/'.   //Regax to parse common server dir into
  '^(.)' .   //Get entry type info (file/dir/etc.)
  '(\S+)\s+' .   //Get permissions info
  '\S+\s+'.   //Find, but don't capture hard link info
  '(\S+)\s+' .  //Get owner name
  '(\S+)\s+' .  //Get group name
  '(\S+)\s+' .  //Get size
  '(\S+\s+\S+\s+\S+\s+)' . //Get file/dir last mod time
  '(.+)$/';   //Get file/dir name
  break;
 }
 
 //Map short identifiers to full names
 $type = array('-'=>'file','d'=>'directory');
 
 $listing = array();
 
 foreach ($temp as $entry) {  //loop through raw listings
 //try to parse raw data into fields
 $match=preg_match($re,$entry,$matches);
 
  if(!$match) {   //if we could not parse the listings
  user_error("The directory listings could not be parsed.");
  return array();   
  }
 
 switch ($this->systypes){  //Give fileds sensible names
 case 'Windows_NT';    //Handle WinNT-style dir listings
  $listings[] = array( //Put parsed data into readable format
  'type' =>
    is_numeric($matches[2]) ? 'file' : 'directory','permissions' => null,'owner' =>NULL,'group'=>null,'size'=>(int)$matches[2],
    'last mod' => $matches[1],'name'=>$matches[3]);
 break;
 
 case 'UNIX':  //Handle UNIX FTP-style dir listings
 default:   //case UNIX fails through to default
 $strings[] = array( //Put data into readable format
 'type' =>$type[$matches[1]],'permissions' => $matches[2],'owner' =>$matches[3],'group' => $matches[4],'size' => $matches[5],
 'last mod' =>$matches[6],'name'=>$matches[7]);
 break;
  
 }
 } 
  return $listings;
[/code]

Since this function is called Is($directory); I tried this:
var_dump($ftp_server->Is($ftp_server->cwd));

However, I get null.

Why?

(It's not that I understand how the raw-listing is being parsed using regular expressions, so it's why I'm asking :) )

Thanks!
-- 
---
Contact info:
Skype: parham-d
MSN: fire_lizard16 at hotmail dot com
email: parham90 at GMail dot com

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux