Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг html файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
viktor6
Отправлено: 30 Июня, 2010 - 19:15:09
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




уважаемые гуру поправьте скрипт который делает сканирует содержимое папки и выводит на страничку ссылки на эти файлы. У меня это все получилось в один столбик а хотелось чтобы они както отделялись по месяцам и както компактно было не гуляло свободное место на страничке
файли в таком виде лежат в папке
2010.03.07.htm
2010.03.08.htm
,
,
2010.06.29.htm
2010.06.30.htm
PHP:
скопировать код в буфер обмена
  1. <?
  2. echo ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />");
  3. echo ("<title>» Логи сервера Plusnet</title>");
  4. echo ("<h1 align=center>Логи сервера Plusnet:</h1>");
  5. echo ("<body style=\"background-color: rgb(204, 204, 204); color: rgb(0, 0, 0);\" oncopy=\"return false\" alink=\"#ee0000\" link=\"#0000ee\" vlink=\"#551a8b\">");
  6. echo ("<body bgcolor=\"white\" text=\"black\" link=\"red\" vlink=\"red\" alink=\"green\" background=\"bg.gif\">");
  7. echo ("<td><p align=\"center\">[<a href=\"http://cs.datasvit.ks.ua\">Home</a>] [<a href=\"http://forums.vik.datasvit.ks.ua/forumdisplay.php?f=140\">Forum</a>]</p></td>");
  8. echo ("<hr>");
  9.  
  10. function getFiles($path) {
  11.    //Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
  12.    //sorted by the file name (case insensitive).  If two files are identical when compared without case, they will sort
  13.    //relative to each other in the order presented by readdir()
  14.    $files = array();
  15.    $fileNames = array();
  16.    $i = 0;
  17.  
  18.    if (is_dir($path)) {
  19.        if ($dh = opendir($path)) {
  20.            while (($file = readdir($dh)) !== false) {
  21.                    $ext = substr(strrchr($file, '.'), 1);
  22.                if ($file == "." || $file == ".." || $ext != "htm") continue;
  23.                $fullpath = $path . "/" . $file;
  24.                $fkey = strtolower($file);
  25.                while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
  26.                $a = stat($fullpath);
  27.                $files[$fkey]['size'] = $a['size'];
  28.                if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
  29.                else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
  30.                else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
  31.                else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
  32.                $files[$fkey]['name'] = $file;
  33.                $files[$fkey]['type'] = filetype($fullpath);
  34.                $fileNames[$i++] = $fkey;
  35.            }
  36.            closedir($dh);
  37.        } else die ("Cannot open directory:  $path");
  38.    } else die ("Path is not a directory:  $path");
  39.    sort($fileNames,SORT_STRING);
  40.    $sortedFiles = array();
  41.    $i = 0;
  42.    foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
  43.  
  44.    return $sortedFiles;
  45. }
  46.  
  47. $files = getFiles("./");
  48. foreach ($files as $file) print "<center><b><a href=\"$file[name]\">$file[name]</a></b><br></center>\n";
  49. ?>

(Отредактировано автором: 30 Июня, 2010 - 19:20:57)

 
 Top
Uchkuma
Отправлено: 30 Июня, 2010 - 19:59:42
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




В общем вот. Разделение по месяцам, как вы хотели. Файлы в массиве вроде отсортированы, так что все должно вывести правильно.
PHP:
скопировать код в буфер обмена
  1. foreach($files as $file){
  2. //$year = substr($file, 0, 4);
  3. $month = substr($file, 5, 2);//месяц
  4.  
  5. # Если пошел другой месяц, вставляем разделитель <hr>
  6. if(empty($cur_month) OR $cur_month==$month) $separator = ''; else $separator = '<hr>';
  7. $cur_month = $month;
  8.  
  9. echo "$separator<a href=\"$file[name]\">$file[name]</a><br>";
  10. }

Если вы хотите сделать в несколько столбцов, то вывод файлов надо заключить в таблицу, а в качестве разделителя использовать </td><td>.
 
 Top
viktor6
Отправлено: 01 Июля, 2010 - 13:52:42
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Uchkuma пишет:
В общем вот. Разделение по месяцам, как вы хотели. Файлы в массиве вроде отсортированы, так что все должно вывести правильно.
PHP:
скопировать код в буфер обмена
  1. foreach($files as $file){
  2. //$year = substr($file, 0, 4);
  3. $month = substr($file, 5, 2);//месяц
  4.  
  5. # Если пошел другой месяц, вставляем разделитель <hr>
  6. if(empty($cur_month) OR $cur_month==$month) $separator = ''; else $separator = '<hr>';
  7. $cur_month = $month;
  8.  
  9. echo "$separator<a href=\"$file[name]\">$file[name]</a><br>";
  10. }

Если вы хотите сделать в несколько столбцов, то вывод файлов надо заключить в таблицу, а в качестве разделителя использовать </td><td>.


Изменения не увидел изменилось только то что теперь оно слева стало а раньше по средине

Да хотелось бы чтобы было несколько столбцов + чтобы каждый столбик отнсился к определенному месяцу
 
 Top
Uchkuma
Отправлено: 01 Июля, 2010 - 14:38:52
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Вы так сделали?
PHP:
скопировать код в буфер обмена
  1. echo '<table><tr><td>';//начинаем таблицу, в которую будут вставляться файлы
  2. foreach($files as $file){
  3. //$year = substr($file, 0, 4);//пригодится, если будем делить по годам
  4. $month = substr($file, 5, 2);//достаем месяц из имени файла
  5.  
  6. # Если пошел другой месяц, вставляем разделитель $separator
  7. //разделитель '</td><td>' закрывает текущий столбец и открывает новый
  8. if(empty($cur_month) OR $cur_month==$month) $separator = ''; else $separator = '</td><td>';
  9. $cur_month = $month;
  10.  
  11. echo "$separator<a href=\"$file[name]\">$file[name]</a><br>";//выводим очередной файл
  12. }
  13. echo '</td></tr></table>';//заканчиваем таблицу

Каждый новый месяц будет в новом столбце.
(Добавление)
Вы хоть немножко в код вникаете? :) Щас проставлю комментарии.

(Отредактировано автором: 01 Июля, 2010 - 14:51:13)

 
 Top
viktor6
Отправлено: 01 Июля, 2010 - 14:44:10
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




вот как
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. echo ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />");
  4. echo ("<title>» Логи сервера Plusnet</title>");
  5. echo ("<h1 align=center>Логи сервера Plusnet:</h1>");
  6. echo ("<body style=\"background-color: rgb(204, 204, 204); color: rgb(0, 0, 0);\" oncopy=\"return false\" alink=\"#ee0000\" link=\"#0000ee\" vlink=\"#551a8b\">");
  7. echo ("<body bgcolor=\"white\" text=\"black\" link=\"red\" vlink=\"red\" alink=\"green\" background=\"bg.gif\">");
  8. echo ("<td><p align=\"center\">[<a href=\"http://cs.datasvit.ks.ua\">Home</a>] [<a href=\"http://forums.vik.datasvit.ks.ua/forumdisplay.php?f=140\">Forum</a>]</p></td>");
  9. echo ("<hr>");
  10.  
  11. function getFiles($path) {
  12.    //Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
  13.    //sorted by the file name (case insensitive).  If two files are identical when compared without case, they will sort
  14.    //relative to each other in the order presented by readdir()
  15.    $files = array();
  16.    $fileNames = array();
  17.    $i = 0;
  18.  
  19.    if (is_dir($path)) {
  20.        if ($dh = opendir($path)) {
  21.            while (($file = readdir($dh)) !== false) {
  22.                    $ext = substr(strrchr($file, '.'), 1);
  23.                if ($file == "." || $file == ".." || $ext != "htm") continue;
  24.                $fullpath = $path . "/" . $file;
  25.                $fkey = strtolower($file);
  26.                while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
  27.                $a = stat($fullpath);
  28.                $files[$fkey]['size'] = $a['size'];
  29.                if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
  30.                else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
  31.                else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
  32.                else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
  33.                $files[$fkey]['name'] = $file;
  34.                $files[$fkey]['type'] = filetype($fullpath);
  35.                $fileNames[$i++] = $fkey;
  36.            }
  37.            closedir($dh);
  38.        } else die ("Cannot open directory:  $path");
  39.    } else die ("Path is not a directory:  $path");
  40.    sort($fileNames,SORT_STRING);
  41.    $sortedFiles = array();
  42.    $i = 0;
  43.    foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
  44.  
  45.    return $sortedFiles;
  46. }
  47.  
  48. $files = getFiles("./");
  49. echo '<table><tr><td>';
  50. foreach($files as $file){
  51. //$year = substr($file, 0, 4);
  52. $month = substr($file, 5, 2);//месяц
  53.  
  54. # Если пошел другой месяц, вставляем разделитель <hr>
  55. if(empty($cur_month) OR $cur_month==$month) $separator = ''; else $separator = '</td><td>';
  56. $cur_month = $month;
  57.  
  58. echo "$separator<a href=\"$file[name]\">$file[name]</a><br>";
  59. }
  60. echo '</td></tr></table>';
  61. ?>
  62.  
 
 Top
Uchkuma
Отправлено: 01 Июля, 2010 - 14:54:19
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Упс! В строке 52 $file[name] вместо $file, конечно же.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB