PHP.mk документација

dir

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.dir.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.dir.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
dir

Референца за `function.dir.php` со подобрена типографија и навигација.

function.dir.php

dir

(PHP 4, PHP 5, PHP 7, PHP 8)

dirReturn an instance of the Directory class

= NULL

dir(string $directory, ?resource $context = null): Директориум|false

Вратете инстанца на класата Directory directory Псевдо-објектно-ориентиран механизам за читање директориум. Дадениот

Параметри

directory

се отвора.

context

А контекст поток resource.

Вратени вредности

Директориум за отворање Директориум, или false Враќа инстанца на

Дневник на промени

Верзија = NULL
8.0.0 context сега е null.

Примери

Пример #1 dir() example

во случај на грешка. Ве молиме забележете го начинот на којDirectory::read() Оператори за споредба се проверува вратената вредност во примерот подолу. Ние експлицитно тестираме дали вратената вредност е идентична со (еднаква и од ист тип како - видете false за повеќе информации) false бидејќи инаку, секој запис во директориумот чие име се проценува како

<?php
$d
= dir("/etc/php5");
echo
"Handle: " . $d->handle . "\n";
echo
"Path: " . $d->path . "\n";
while (
false !== ($entry = $d->read())) {
echo
$entry."\n";
}
$d->close();
?>

Горниот пример ќе прикаже нешто слично на:

Handle: Resource id #2
Path: /etc/php5
.
..
apache
cgi
cli

Белешки

Забелешка:

ќе го запре циклусот.

Белешки од корисници 6 белешки

ilya at ilya dot top
пред 4 години
<?php

   // simple juste use FilesystemIterator 
   // and you can skip dot and duble dot
   // and use it in array
   // new FilesystemIterator( PATH , OPTIONS ) : array 

$array_file_list = new FilesystemIterator( PATH_ROOT . 'folder/', FilesystemIterator::SKIP_DOTS );

?>
Редоследот по кој записите во директориумот се враќаат од методот read зависи од системот.
20 години пред
This one's pretty nice.  After getting frustrated for hunting down .jpg files in my massive music collection (PHP would run out of memory), I thought there should be a preg_ls function.

function preg_ls ($path=".", $rec=false, $pat="/.*/") {
    // it's going to be used repeatedly, ensure we compile it for speed.
    $pat=preg_replace("|(/.*/[^S]*)|s", "\\1S", $pat);
    //Remove trailing slashes from path
    while (substr($path,-1,1)=="/") $path=substr($path,0,-1);
    //also, make sure that $path is a directory and repair any screwups
    if (!is_dir($path)) $path=dirname($path);
    //assert either truth or falsehoold of $rec, allow no scalars to mean truth
    if ($rec!==true) $rec=false;
    //get a directory handle
    $d=dir($path);
    //initialise the output array
    $ret=Array();
    //loop, reading until there's no more to read
    while (false!==($e=$d->read())) {
        //Ignore parent- and self-links
        if (($e==".")||($e=="..")) continue;
        //If we're working recursively and it's a directory, grab and merge
        if ($rec && is_dir($path."/".$e)) {
            $ret=array_merge($ret,preg_ls($path."/".$e,$rec,$pat));
            continue;
        }
        //If it don't match, exclude it
        if (!preg_match($pat,$e)) continue;
        //In all other cases, add it to the output array
        $ret[]=$path."/".$e;
    }
    //finally, return the array
    return $ret;
}

Not bad for a mere 18 lines, don't you think?

Example use:

foreach (preg_ls("/etc/X11", true, "/.*\.conf/i") as $file) echo $file."\n";

Output: 

/etc/X11/xkb/README.config
/etc/X11/xorg.conf-vesa
/etc/X11/xorg.conf~
/etc/X11/gui.conf
/etc/X11/xorg.conf
/etc/X11/xorg.conf-fbdev
fordiman at gmail dot com
20 години пред
Note that the dir object will use the default encoding for non-unicode programs on Windows with PHP 5.x.

So, if you have a file named with characters unsupported by the current default encoding, the dir->read() method will return a wrong entry.

<?php
/*
** This script is on the same directory than a file named with
** unsupported characters for the current default encoding.
*/
$d = dir("./");
while(false !== ($e = $d->read()))
    echo $e . '<br/>';
?>

This will print a "?" for every unsupported characters, and not the right file name. So take care if you check with is_file/is_dir right after enumerating.
Анонимен
20 години пред
Regarding samuel's comment about the dir() function not supporting Unicode properly, it's all in the encoding. The function does NOT internally change Unicode characters into question marks (?), as I was first led to believe. If you simply try to output them in UTF-8, they'll show up just right.
ilya at ilya dot top
пред 4 години
<?php

/*
  New recursive PHP8 
  gen array path with  FilesystemIterator
*/

$recurcive_path = [];
rdir(path, $recurcive_path);
var_dump($recurcive_path);

function rdir(string $path, array &$recurcive_path): string
{
    if ($path != '') {
        $recurcive_path[] = $path;
        $array_list = iterator_to_array(new FilesystemIterator($path, FilesystemIterator::SKIP_DOTS));
        foreach ($array_list as $name) {
            $pathname = $name->getpathname();
            if(is_dir($pathname) && $name->getfilename()[0] != '.'){
                $path = rdir($pathname,$recurcive_path);
            }
        }
        return $path;
    }
    return '';
}

?>
samuel dot l at mushicrew dot com
пред 15 години
to get a dir of http://www.example.com/directory

<?php
function remotedir($dir)
{
  $dir = str_replace(" ", "%20", html_entity_decode($dir));
  if (($rh = fopen($dir, 'rb')) === FALSE) { return false; }
  $i = 0;
  while (!feof($rh)) {
     $archivos = fgetss($rh);
     $directorio[$i++] = trim( substr($archivos,1,strpos($archivos," ",1)) );
  }
  fclose($rh);
  return $directorio;
}
?>
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.