Witam!
Mam tutaj kod php który wyświetla zawartość plików w danym katalogu:
<?php
if ($pliczki = opendir('pliki')) {
while (false !== ($nazw = readdir($pliczki))) {
if ($nazw != "." && $nazw != "..") {
echo file_get_contents("$nazw");
}
}
closedir($pliczki);
}
?>
Mam z nim dwa problemy:
1.W katalogu mam pliki z datami w nazwach. Jak zrobić by wyświetlało tylko pierwsze pięć plików: (ułożone chronologicznie, od najmłodszego)
Na przykład:
26-09-2012-nazwajakas.txt
12-09-2012-nazwa.txt
24-08-2012-jakas.txt
18-07-2012-nazwapliku.txt
15-07-2012-nazywnictwo.txt
13-07-2012-pliki.txt
11-07-2012-tekstowe.txt
07-07-2012-baza.txt
03-07-2012-dane.txt
2.Jak zrobić by czytało pliki jedynie z rozszerzeniem *txt ?
Proszę o jakieś propozycje czego użyć.
Pozdrawiam!
Pliki przerobić w pętli w tablicę i potem porównać rozszerzenia. Po porównaniu, które zostawi same pliki txt można zabrać się za odczytanie ich.
Mogłeś pliki nazywać w ten sposób: YYYYMMDD-nazwa.txt byłoby łatwiej, ale wypróbuj ten kod:
if ($t = glob('pliki/*.txt'))
{
$f = $c = array();
$p = '/(\d{2})-(\d{2})-(\d{4})/';
foreach ($t as $v)
{
if (preg_match($p, $v, $m))
{
$f[$m[3].$m[2].$m[1]] = $v;
}
}
krsort($f);
$j = count($t) > 5 ? 5 : count($t);
$c = array_slice($f, 0, $j);
foreach ($c as $txt)
{
echo PHP_EOL . file_get_contents($txt);
}
}
[EDIT] Błędne wyrażenie regularne było
Nie za bardzo che działać i w dodatku nie wywala żadnego błędu. W sumie to mogę je przekonwertować do takiej postaci jak podałeś. Ważne żeby działało.
Pomyliłem się wyrażeniu regularnym. Mogłeś się domyśleć :D. Poprawiłem kod:
<?php
if ($t = glob('pliki/*.txt'))
{
$files = array();
$f = $c = array();
$p = '/(\d{2})-(\d{2})-(\d{4})/';
foreach ($t as $v)
{
if (preg_match($p, $v, $m))
{
$f[$m[3].$m[2].$m[1]] = $v;
}
}
krsort($f);
$j = count($t) > 5 ? 5 : count($t);
$c = array_slice($f, 0, $j);
foreach ($c as $txt)
{
$files[] = file_get_contents($txt);
}
echo join(PHP_EOL.PHP_EOL, $files);
}
?>
Tutaj masz przykład: http://freedots.home.pl/_testy/t504426/
Ooo dzięki, było mi to bardzo potrzebne no i fajnie że nie muszę konwertować tych plików.