လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FTP_RAWLIST ၏ရလဒ်ကို JSON format ကိုမည်သို့ပြောင်းလဲရမည်နည်း

FTP_RAWLIST ၏ရလဒ်ကို JSON format ကိုမည်သို့ပြောင်းလဲရမည်နည်း

gitbox 2025-05-26

1 ။ FTP_RAWLIST ပြန်လာရလဒ်ပုံစံကိုနားလည်ပါ

FTP_RAWLIST သည် strings array တစ်ခုသို့ပြန်ပို့သည်။ string တစ်ခုစီသည် Linux System တွင် LS -l command ၏ output နှင့်ဆင်တူသည်။

 -rw-r--r-- 1 user group 1234 May 10 10:00 file1.txt
drwxr-xr-x 2 user group 4096 May 09 09:00 folder1

လိုင်းတစ်ခုစီတွင်ပါရှိသောအချက်အလက်များမှာ -

  • ဖိုင်ခွင့်ပြုချက် (ဥပမာ - - R - R - R--- )

  • hard link ကိုရေတွက်

  • ဖိုင်ပိုင်သောအသုံးပြုသူ

  • ဖိုင်တွဲဖက်ပိုင်

  • ဖိုင်အရွယ်အစား (byte နံပါတ်)

  • ပြုပြင်ထားသောနေ့စွဲ (တစ်လ, နေ့, အချိန်, အချိန်,

  • ဖိုင်နာမည်


2 ။ Array သို့ FTP_RAWLIST ၏ရလဒ်ကိုခွဲခြမ်းစိတ်ဖြာခြင်း

ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်၏အဓိကအချက်မှာကြိုးမျဉ်းတစ်ခုစီကိုနယ်ပယ်အမျိုးမျိုးသို့ဖြိုခွဲခြင်းနှင့်၎င်းကိုသော့ချက်တန်ဖိုးအတွဲများအဖြစ်စုစည်းရန်ဖြစ်သည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 <?php
function parseRawList(array $rawList): array {
    $files = [];
    foreach ($rawList as $line) {
        $chunks = preg_split('/\s+/', $line, 9);
        if (count($chunks) < 9) {
            continue; // ပုံစံ၏ချွင်းချက်,ခုန်ကျော်သည်
        }
        list($permissions, $links, $owner, $group, $size, $month, $day, $timeOrYear, $name) = $chunks;

        // အရtimeOrYearတရားသူကြီးနှစ်သို့မဟုတ်အချိန်
        if (strpos($timeOrYear, ':') !== false) {
            // အချိန်အပါအဝငျ,ယခုနှစ်လက်ရှိနှစ်ကြာသည်
            $year = date('Y');
            $time = $timeOrYear;
        } else {
            $year = $timeOrYear;
            $time = '00:00';
        }

        // ပြည့်စုံပြုပြင်သည့်အချိန် splicing,Timestamp သို့ကူးပြောင်း
        $dateStr = "$month $day $year $time";
        $timestamp = strtotime($dateStr);

        $files[] = [
            'name' => $name,
            'permissions' => $permissions,
            'links' => (int)$links,
            'owner' => $owner,
            'group' => $group,
            'size' => (int)$size,
            'modified' => date('Y-m-d H:i:s', $timestamp),
            'is_dir' => $permissions[0] === 'd',
        ];
    }
    return $files;
}
?>

3 ။ ဥပမာ - FTP ကိုဆက်သွယ်ပါ, စာရင်းကိုရယူပါ။ ၎င်းကို JSON သို့ပြောင်းပါ

ပြည့်စုံသောဥပမာက FTP server တစ်ခုနှင့်မည်သို့ချိတ်ဆက်ရမည်ကိုပြသပြီး FTP_RAWLISS ကို မည်သို့ခေါ်ဆိုရမည်,

 <?php
$ftpServer = 'gitbox.net';
$ftpUser = 'username';
$ftpPass = 'password';

// တည်ထောင်FTPဆက်
$connId = ftp_connect($ftpServer);
if (!$connId) {
    die("无法ဆက်到FTPဆာဆာ $ftpServer");
}

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

// မူရင်းဖိုင်စာရင်းကိုရယူပါ
$rawList = ftp_rawlist($connId, '.');
if ($rawList === false) {
    ftp_close($connId);
    die("ရယူFTPစာရင်းမအောင်မြင်ပါ");
}

// ခွဲခြမ်းစိတ်ဖြာစာရင်း
$filesArray = parseRawList($rawList);

// ထုတ်လုပ်ခြင်းJSONပမာဏ
header('Content-Type: application/json');
echo json_encode($filesArray, JSON_PRETTY_PRINT);

// 关闭ဆက်
ftp_close($connId);

// အဆိုပါ parsing function ကိုအထက်ကဲ့သို့တူညီသောဖြစ်ပါတယ်,နဲနဲ
?>

4 ။ အကျဉ်းချုပ်

အထက်ဖော်ပြပါနည်းလမ်းများမှတစ်ဆင့် FTP_RAWLIST ၏စာရင်းကို ftp_Rawlist ၏ရလဒ်ကိုစနစ်တကျခင်းကျင်းထားသည့်နေရာတစ်ခုအဖြစ်သို့ပြောင်းလဲပြီးနောက်ဆုံးတွင် JSON format data များကိုထုတ်လုပ်သည်။ ၎င်းသည် PHP အစီအစဉ်အတွင်းရှိ FTP ဖိုင်စာရင်း၏လည်ပတ်မှုကိုလွယ်ကူချောမွေ့စေရုံသာမက API မှတစ်ဆင့်ရှေ့တန်းသို့မဟုတ်အခြားစနစ်များသို့ဒေတာထုတ်လွှင့်မှုကိုအထောက်အကူပြုသည်။

ဤနည်းလမ်းသည်အထူးသဖြင့်ဆောက်လုပ်ရေးစီမံခန့်ခွဲမှု backend သို့မဟုတ် ftp file lists များအပေါ် အခြေခံ. ဖိုင်ရှာဖွေခြင်းလုပ်ငန်းများအတွက်,