как получить последний текстовый документ в папке?

вопросы и ответы по использованию PHP
Ответить
Аватара пользователя
ттбрть
Сообщения: 36
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

как получить последний текстовый документ в папке?

Сообщение ттбрть » 23 ноя 2020, 23:54

C:\Users\2017\Desktop\Accounts

там много текстовых документов и нужно открывать последний по дате создания либо по названию

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: как получить последний текстовый документ в папке?

Сообщение Support » 24 ноя 2020, 01:10

Вот код как определить самый свеже правленный файл.
Определяем с помощью функции file_os->get_modification_date

$path= 'C:\Users\2017\Desktop\Accounts';

$all_items = $folder->get_all_items($path,true, false);
$all_items=explode("<br>",$all_items);

//print_r($all_items);

$file_name="";
$modification_date="";

// цикл по всем элементам
foreach ($all_items as $value)
{
	// получить имя файла
    $name = $file_os->get_name($value);
    echo $name."<br>";
    $md = $file_os->get_modification_date($path."\\".$name);
    echo $md."<br>";

    // получаем начальные данные
    if($file_name=="")
    {
        $file_name =$name; 
        $modification_date = $md;
    }
    else
    {
       // преобразуем строки в даты
        $d1 = date_create_from_format('d.m.y', $md);
        $d2 = date_create_from_format('d.m.y', $modification_date);
        // сравниваем даты
        if($d1>$d2)
        {
            $file_name =$name; 
            $modification_date = $md;
        }
    }
}

echo "самый свежий правленый файл $file_name за $modification_date<br>";
// прочитаем
$txt = $textfile->read_file($path."\\".$file_name);


Аватара пользователя
ттбрть
Сообщения: 36
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

Re: как получить последний текстовый документ в папке?

Сообщение ттбрть » 25 ноя 2020, 11:16

а как сделать точнее ?

Код: Выделить всё

  $md = $file_os->get_modification_date($path."\\".$name);
        
я так понял в эту строчку нужно добавить параметр true
нужно учитывать до минуты время создания

на данный момент пришел к вот такому
и теоретически должно работать но не работает 😭

Код: Выделить всё

$path= 'C:\Users\2017\Desktop\Accounts';

$all_items = $folder->get_all_items($path,true, false);
$all_items=explode("<br>",$all_items);

//print_r($all_items);

$file_name="";
$modification_date="";

// цикл по всем элементам
foreach ($all_items as $value)
{
	// получить имя файла
    $name = $file_os->get_name($value);
    $md = $file_os->get_modification_date($path."\\".$name);
    $mdh = $file_os->get_modification_date($path."\\".$name,true);
echo "$md<br>";
echo "$mdh<br>";
    // получаем начальные данные
    if($file_name=="")
    {
        $file_name =$name; 
        $modification_date = $md;
        $modification_dateh = $mdh;
    }
    else
    {
  // преобразуем строки в даты
        $d1 = date_create_from_format('d.m.y', $md);
        $d2 = date_create_from_format('d.m.y', $modification_date);
        $d3 = date_create_from_format('h.i.s', $mdh);
        $d4 = date_create_from_format('h.i.s', $modification_dateh);
        // сравниваем даты
        if($d1>$d2)
        {
    
        if ($d3>$d4)
        {
         $file_name =$name; 
         $modification_date = $md;
        }
        }
    }
}

echo "самый свежий правленый файл $file_name за $modification_date//$modification_dateh<br>";
// прочитаем
echo $txt = $textfile->read_file($path."\\".$file_name);



// Quit
$app->quit();
?>

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: как получить последний текстовый документ в папке?

Сообщение Support » 25 ноя 2020, 15:32

Если надо со временем попробуйте так:

$path= 'C:\Users\2017\Desktop\Accounts';

$all_items = $folder->get_all_items($path,true, false);
$all_items=explode("<br>",$all_items);

//print_r($all_items);

$file_name="";
$modification_date="";
// цикл по всем элементам
foreach ($all_items as $value)
{
	// получить имя файла
    $name = $file_os->get_folder($value)."\\".$file_os->get_name($value);
    //echo $name."<br>";
    
    // получаем первые результаты
    if($file_name=="")
    {
        $file_name =$name; 
        $modification_date=date ('d.m.y H:i:s', filemtime($file_name));
    }
    else
    {

        //echo date ('d.m.y H:i:s', filemtime($file_name))."<br>";
        //echo date ('d.m.y H:i:s', filemtime($name))."<br>";

        if(filemtime($name)>filemtime($file_name))
        {
            $file_name =$name; 
            $modification_date=date ('d.m.y H:i:s', filemtime($file_name));
        }
    }
}

echo "самый свежий правленый файл $file_name за $modification_date<br>";
// прочитаем
$txt = $textfile->read_file($path."\\".$file_name);

Ответить