Sample code for 30+ languages & platforms
PHP Extension

Get FTP Directory Listing as XML

See more FTP Examples

Demonstrates how to call GetXmlDirListing and parse the results.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

// This example assumes Chilkat Ftp2 to have been previously unlocked.
// See Unlock Ftp2 for sample code.

$ftp = new CkFtp2();

$ftp->put_Hostname('www.my-ftp-server.com');
$ftp->put_Username('mFtpLogin');
$ftp->put_Password('myFtpPassword');

// Connect to the FTP server.
$success = $ftp->ConnectOnly();
if ($success != true) {
    print $ftp->lastErrorText() . "\n";
    exit;
}

// Authenticate with the FTP server.
$success = $ftp->LoginAfterConnectOnly();
if ($success != true) {
    print $ftp->lastErrorText() . "\n";
    exit;
}

// Retrieve (in XML format) the HOME directory of this FTP account.
$xmlListing = $ftp->getXmlDirListing('*.*');
if ($ftp->get_LastMethodSuccess() != true) {
    print $ftp->lastErrorText() . "\n";
    exit;
}

// Now load the XML and parse it..
$xml = new CkXml();
$xml->LoadXml($xmlListing);
print $xml->getXml() . "\n";

// Iterate over the XML...
$i = 0;
$numEntries = $xml->get_NumChildren();
while ($i < $numEntries) {
    // xEntry is a CkXml
    $xEntry = $xml->GetChild($i);
    if ($xEntry->TagEquals('dir') == true) {
        print 'Directory: ' . $xEntry->content() . "\n";
    }
    else {
        $sz = $xEntry->GetChildIntValue('size');
        print 'File: ' . $xEntry->getChildContent('name') . ', size: ' . $sz . "\n";
        // xLastMod is a CkXml
        $xLastMod = $xEntry->FindChild('lastModTime');
        if ($xEntry->get_LastMethodSuccess() == true) {
            $month = $xLastMod->GetAttrValueInt('m');
            $year = $xLastMod->GetAttrValueInt('y');
            $day = $xLastMod->GetAttrValueInt('d');
            print '    YYYY-MM-DD: ' . $year . '-' . $month . '-' . $day . "\n";

        }

    }

    $i = $i + 1;
}

$ftp->Disconnect();

print 'Success.' . "\n";

// Sample XML directory listing:
// <?xml version="1.0" encoding="utf-8" ?>
// <remoteDir>
//     <dir>Desktop</dir>
//     <dir>Documents</dir>
//     <dir>Downloads</dir>
//     <dir>Music</dir>
//     <dir>Pictures</dir>
//     <dir>Public</dir>
//     <dir>Templates</dir>
//     <dir>Videos</dir>
//     <file>
//         <name>c.py</name>
//         <size>1244</size>
//         <lastModTime full="20151009-000000" y="2015" d="9" m="10" hh="0" mm="0" ss="0" />
//     </file>
//     <file>
//         <name>cacerts_linux</name>
//         <size>177207</size>
//         <lastModTime full="20140915-000000" y="2014" d="15" m="9" hh="0" mm="0" ss="0" />
//     </file>
//     <file>
//         <name>empty.txt</name>
//         <size>0</size>
//         <lastModTime full="20150917-000000" y="2015" d="17" m="9" hh="0" mm="0" ss="0" />
//     </file>
//     <file>
//         <name>hamlet.xml</name>
//         <size>279658</size>
//         <lastModTime full="20160917-084100" y="2016" d="17" m="9" hh="8" mm="41" ss="0" />
//     </file>
// </remoteDir>
// 
// 

?>