လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ftp_Rawlist နှင့် array_map ကို သုံး. FTP ဖိုင်စာရင်းများကိုမည်သို့သုတ်သင်ရမည်နည်း

ftp_Rawlist နှင့် array_map ကို သုံး. FTP ဖိုင်စာရင်းများကိုမည်သို့သုတ်သင်ရမည်နည်း

gitbox 2025-05-26

ပထမ ဦး စွာ FTP_Connect နှင့် ftp_login မှတဆင့် FTP server သို့ဆက်သွယ်သည်။ ထို့နောက်ဝေးလံခေါင်သီသော directory ၏မူလဖိုင်စာရင်းကိုရယူရန် FTP_RAWLIST ကို သုံးပါ။

 <?php

$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";

// ဆက် FTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("无法ဆက်到 FTP ဆာဆာ");
}

// လော့ဂ်အင်
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    ftp_close($conn_id);
    die("FTP လော့ဂ်အင်失败");
}

// ပစ်မှတ်လမ်းညွှန်သို့ပြောင်းပါ
$remote_dir = "/files";
ftp_chdir($conn_id, $remote_dir);

// မူရင်းဖိုင်စာရင်းကိုရယူပါ
$raw_list = ftp_rawlist($conn_id, ".");

ftp_close($conn_id);

ဤအချက်မှာ $ Raw_List သည်ကြိုးတပ်ထားသော strings တစ်ခုဖြစ်ပြီး element တစ်ခုစီသည် Unix Ls -l နှင့်ဆင်တူသည့်အပြင်အဆင်တစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့်:

 -rw-r--r--    1 user group     1024 Jan 01 12:00 file1.txt
drwxr-xr-x    2 user group     4096 Jan 01 12:01 folder1

နောက်စာရင်းကိုလုပ်ဆောင်ရန်နှင့်လိုင်းတစ်ခုစီကိုဖွဲ့စည်းထားသောအချက်အလက်များကိုတည်ဆောက်ရန်စီစဉ်ထားသောအချက်အလက်များကိုဖွဲ့စည်းရန် array_map ကို အသုံးပြုသည်။

 $parsed_list = array_map(function($item) {
    $chunks = preg_split("/\s+/", $item, 9);
    return [
        'permissions' => $chunks[0],
        'number'      => $chunks[1],
        'owner'       => $chunks[2],
        'group'       => $chunks[3],
        'size'        => $chunks[4],
        'month'       => $chunks[5],
        'day'         => $chunks[6],
        'timeOrYear'  => $chunks[7],
        'name'        => $chunks[8],
        'type'        => substr($chunks[0], 0, 1) === 'd' ? 'directory' : 'file'
    ];
}, $raw_list);

print_r($parsed_list);

ယခုသင်သည် FTP မှတည်ဆောက်ထားသည့်မူရင်းဖိုင်စာရင်းကိုစနစ်တကျခင်းကျင်းထဲသို့ထည့်သွင်းထားသည်။ Directories အစားဖိုင်များအစားဖိုင်များအတွက်ဖိုင်အမျိုးအစားများကို filter လုပ်ရန် array_filter ကို ထပ်မံအသုံးပြုနိုင်သည်။

 $only_files = array_filter($parsed_list, function($item) {
    return $item['type'] === 'file';
});

print_r($only_files);

ဖိုင်တစ်ခုစီအတွက် download link တစ်ခုထုတ်လုပ်ခြင်းကဲ့သို့သောအချက်အလက်များကို array_map နှင့်ထပ်တူပေါင်းစပ်ထည့်နိုင်သည်။

 $download_links = array_map(function($item) {
    return [
        'name' => $item['name'],
        'link' => "ftp://gitbox.net/files/" . urlencode($item['name'])
    ];
}, $only_files);

print_r($download_links);

ဤနည်းအားဖြင့် FTP_RAWLIST နှင့် Array_map နှင့်ပေါင်းစပ်ပြီး ftp ဖိုင်စာရင်းများကို filtering, strucking, batch link မျိုးဆက်နှင့်အခြားစစ်ဆင်ရေးများကိုအကောင်အထည်ဖော်ရန်အတွက်လုပ်ဆောင်နိုင်သည်။ ဤနည်းလမ်းသည်အကျိုးရှိရုံသာမကဘဲထိန်းသိမ်းထားနိုင်မှုနှင့်ပမာဏတို့လည်းရှိသည်။ ဤဖြေရှင်းချက်သည် FTP ဖိုင်များ၏စီမံခန့်ခွဲမှုလိုအပ်သည့် application scarios အတွက်အထူးအကြံပြုလိုပါသည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    array_map