Показать все файлы php

Показать все файлы php

Для того, чтобы получить список файлов в папке вам понадобится:

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

Нам нужен путь на сервере до корневой папки, у меня эта конструкция в самом верху сайта:

Далее соединим путь на сервере с путем от корневой до файла:

Применим к данной пути функцию scandir и получим список всех элементов в папке:

Выведем список файлов из папки с помощью print_r:

$dir = $home . ‘/__a-data/Z-arhiv/scandir-ili-sodergimoe-v-papke/1/’;

Результат получения списка файлов из папки с помощью scandir

Получить список файлов в папке php №2

Для получения списка файлов из папки вам потребуется :

Как со всеми программами php используем «теги php».

opendir — открываем папку уже в выше приведенном пункте $dir

Создаем цикл и внутри прописываем условие пока файлы не кончатся цикл продолжается. используем readdir

Внутри цикла мы можем сделать любое условие для фильтрации списка файлов из папки php — соберем весь код вместе:

while (false !== ($file = readdir($handle)))

Результат получения списка файлов с помощью -> opendir + readdir

Список файлов из папки php с ссылкой на файл

Как из списка файлов сделать список файлов с ссылками на эти файлы!?

Готовый пример Список файлов из папки php с ссылкой на файл

Скрипт список файлов из папки php с ссылкой на файл

Возьмем тот, же алгоритм и добавим туда немного кода и получим вот такой вариант:

В переменной $path — помещаем ваш путь до папки. путь до корневой.

Код получения списка файлов из папки php с ссылкой на файл

Пример работы Кода получения списка файлов из папки php с ссылкой на файл

Берем тот код, что вы скачали выше и помещаем его прямо здесь:

Читайте также:  Python function parameter type

Что в архиве? В архиве вот этот пример.
Скачиваем здесь

Открываем файл «list_files_with_url.php».

Заменяем путь в переменной $path на ваш путь, папки, которую хотим сканировать и выводить список файлов с ссылкой на него!

Зачем нужен список файлов с ссылкой на файл!?

У вас есть папка. с неким содержанием. а в этой папке есть ещё подпапки и т.д.

И вам нужно сканировать эти папки и вывести их все в соответствующем порядке.

Это можно сделать вручную. если у вас, например, 10. 20 файлов.

А если, как у меня — 1356 (естественно число динамическое)- да еще если каждый день добавляешь или убавляешь контент(в смысле файлы. )! Представляете сколько времени на это потребуется? Я даже представлять себе не хочу такое!

Примеры списков файлов с ссылкой на файл!?

Создание списков из папки с ссылкой не файл используется во многих местах — блин это просто удобно!

Страница sitemap.html(страница может загружаться долго. уж извините, без этого никак. ) — сделана именно на этом принципе! И мало того! Формируются списки в соответствии с тегами на сайте — это было довольно интересно решать!

Была еще интересная задачка — дерево файлов: теория — пример(ссылок на файлах там нет, но на этой основе делаю менеджер файлов — на момент написания данных строк еще в процессе(не могу доделать).

Это. что вспомнил на вскидку.

Список файлов из папки php с ссылкой на файл html.

В самом начале данного пункта указываю на несоответствие некоторых поисковых запросов типа(и аналогичных):

html список файлов в папке — html не может получать файлы никаким образом! Для этого нужен серверный язык, например php.

Что я подразумеваю, когда говорю «Список файлов html» — это означает -«Список файлов из папки php с ссылкой на файл html» с получением и выводом содержания тега title(если есть) вместо названия файла.

Рассмотрим пример Список файлов из папки php с ссылкой на файл html.

А нам нужно сделать таким образом.

Изначально я закладываю условие, что все файлы html имеют тег title и соответственно и содержание внутри тега тоже есть!

Но если тега «title» нет, то выведем :

Что в архиве? В архиве вот этот пример.
Скачиваем здесь

Открываем файл «list_files_with_url_and_title.php».

Заменяем путь в переменной $path на ваш путь, папки, которую хотим сканировать и выводить список файлов с ссылкой на него и содержанием тега title(если есть)!

Источник

Смотрите также

За описанием сопутствующих функций, таких как dirname() , is_dir() , mkdir() и rmdir() , обратитесь к главе Файловая система.

Читайте также:  Python logging close file

User Contributed Notes 7 notes

I wrote a simple backup script which puts all files in his folder (and all of the sub-folders) in one TAR archive.
(It’s classic TAR format not USTAR, so filename and path to it can’t be longer then 99 chars)
/***********************************************************
* Title: Classic-TAR based backup script v0.0.1-dev
**********************************************************/

Class Tar_by_Vladson var $tar_file ;
var $fp ;
function Tar_by_Vladson ( $tar_file = ‘backup.tar’ ) $this -> tar_file = $tar_file ;
$this -> fp = fopen ( $this -> tar_file , «wb» );
$tree = $this -> build_tree ();
$this -> process_tree ( $tree );
fputs ( $this -> fp , pack ( «a512» , «» ));
fclose ( $this -> fp );
>
function build_tree ( $dir = ‘.’ ) $handle = opendir ( $dir );
while( false !== ( $readdir = readdir ( $handle ))) if( $readdir != ‘.’ && $readdir != ‘..’ ) $path = $dir . ‘/’ . $readdir ;
if ( is_file ( $path )) $output [] = substr ( $path , 2 , strlen ( $path ));
> elseif ( is_dir ( $path )) $output [] = substr ( $path , 2 , strlen ( $path )). ‘/’ ;
$output = array_merge ( $output , $this -> build_tree ( $path ));
>
>
>
closedir ( $handle );
return $output ;
>
function process_tree ( $tree ) foreach( $tree as $pathfile ) if ( substr ( $pathfile , — 1 , 1 ) == ‘/’ ) fputs ( $this -> fp , $this -> build_header ( $pathfile ));
> elseif ( $pathfile != $this -> tar_file ) $filesize = filesize ( $pathfile );
$block_len = 512 * ceil ( $filesize / 512 )- $filesize ;
fputs ( $this -> fp , $this -> build_header ( $pathfile ));
fputs ( $this -> fp , file_get_contents ( $pathfile ));
fputs ( $this -> fp , pack ( «a» . $block_len , «» ));
>
>
return true ;
>
function build_header ( $pathfile ) if ( strlen ( $pathfile ) > 99 ) die( ‘Error’ );
$info = stat ( $pathfile );
if ( is_dir ( $pathfile ) ) $info [ 7 ] = 0 ;
$header = pack ( «a100a8a8a8a12A12a8a1a100a255» ,
$pathfile ,
sprintf ( «%6s » , decoct ( $info [ 2 ])),
sprintf ( «%6s » , decoct ( $info [ 4 ])),
sprintf ( «%6s » , decoct ( $info [ 5 ])),
sprintf ( «%11s » , decoct ( $info [ 7 ])),
sprintf ( «%11s» , decoct ( $info [ 9 ])),
sprintf ( «%8s» , » » ),
( is_dir ( $pathfile ) ? «5» : «0» ),
«» ,
«»
);
clearstatcache ();
$checksum = 0 ;
for ( $i = 0 ; $i < 512 ; $i ++) $checksum += ord ( substr ( $header , $i , 1 ));
>
$checksum_data = pack (
«a8» , sprintf ( «%6s » , decoct ( $checksum ))
);
for ( $i = 0 , $j = 148 ; $i < 7 ; $i ++, $j ++)
$header [ $j ] = $checksum_data [ $i ];
return $header ;
>
>

header ( ‘Content-type: text/plain’ );
$start_time = array_sum ( explode ( chr ( 32 ), microtime ()));
$tar = & new Tar_by_Vladson ();
$finish_time = array_sum ( explode ( chr ( 32 ), microtime ()));
printf ( «The time taken: %f seconds» , ( $finish_time — $start_time ));
?>

Here is a very similar function to *scandir*, if you are still using PHP4.

Читайте также:  Функциями высшего порядка python

This recursive function will return an indexed array containing all directories or files or both (depending on parameters). You can specify the depth you want, as explained below.

// $path : path to browse
// $maxdepth : how deep to browse (-1=unlimited)
// $mode : «FULL»|»DIRS»|»FILES»
// $d : must not be defined

function searchdir ( $path , $maxdepth = — 1 , $mode = «FULL» , $d = 0 )
if ( substr ( $path , strlen ( $path ) — 1 ) != ‘/’ ) < $path .= '/' ; >
$dirlist = array () ;
if ( $mode != «FILES» ) < $dirlist [] = $path ; >
if ( $handle = opendir ( $path ) )
while ( false !== ( $file = readdir ( $handle ) ) )
if ( $file != ‘.’ && $file != ‘..’ )
$file = $path . $file ;
if ( ! is_dir ( $file ) ) < if ( $mode != "DIRS" ) < $dirlist [] = $file ; >>
elseif ( $d >= 0 && ( $d < $maxdepth || $maxdepth < 0 ) )
$result = searchdir ( $file . ‘/’ , $maxdepth , $mode , $d + 1 ) ;
$dirlist = array_merge ( $dirlist , $result ) ;
>
>
>
closedir ( $handle ) ;
>
if ( $d == 0 ) < natcasesort ( $dirlist ) ; >
return ( $dirlist ) ;
>

I would like to present these two simple functions for generating a complete directory listing — as I feel the other examples are to restrictive in terms of usage.

Usage is as simple as this:
$dir = «»;
$arDirTree = dirTree($dir);
printTree($arDirTree);

It is easy to add files to the tree also — so enjoy.

To join directory and file names in a cross-platform manner you can use the following function.

function join_path()
$num_args = func_num_args();
$args = func_get_args();
$path = $args[0];

It should do the following:
$src = join_path( ‘/foo’, ‘bar’, ‘john.jpg’ );
echo $src; // On *nix -> /foo/bar/john.jpg

$src = join_path( ‘C:\www’, ‘domain.com’, ‘foo.jpg’ );
echo $src; // On win32 -> C:\\www\\domain.com\\foo.jpg

Samba mounts under a Windows environment are not accessible using the mounted drive letter. For instance, if you have drive X: in Windows mounted to //example.local/shared_dir (where example.local is a *nix box running Samba), the following constructs

$dir = «X:\\data\\»;
$handle = opendir( $dir );
or
$d = dir( $dir );

will return a warning message «failed to open dir: No error»

On the other hand, using the underlying mapping info works just fine. For example:

$dir = «//example.local/shared_dir/data»;
$handle = opendir( $dir );
or
$d = dir( $dir );

Both cases do what they’re expected to.

Mine works as long as the samba volume is actually mounted. Having it listed in the «My Computer» window doesn’t warrant that.

I have posted this same observation in scandir, and found out that it is not limited to scandir alone but to ALL directory functions.

Directory functions DOES NOT currently supports Japanese characters.

Источник

Оцените статью