una remove mostrar manipulacion manejo listado informatica funciones ficheros ejemplos directorio desde con carpeta buscar archivos abrir php file list directory

mostrar - remove html tags php



Lista PHP de archivos específicos en un directorio (8)

Deberías usar glob.

glob(''*.xml'')

Más sobre usar glob y filtrado avanzado:

http://domexception.blogspot.fi/2013/08/php-using-functional-programming-for.html

El siguiente código listará todo el archivo en un directorio

<?php if ($handle = opendir(''.'')) { while (false !== ($file = readdir($handle))) { if (($file != ".") && ($file != "..")) { $thelist .= ''<LI><a href="''.$file.''">''.$file.''</a>''; } } closedir($handle); } ?> <P>List of files:</p> <UL> <P><?=$thelist?></p> </UL>

Si bien este es un código muy simple, hace el trabajo.

Ahora estoy buscando una forma de enumerar SOLAMENTE los archivos que tienen .xml (o .XML) al final, ¿cómo puedo hacer eso?


La respuesta más simple es poner otra condición ''.xml'' == strtolower(substr($file, -3)) .

Pero yo también recomendaría usar glob .


Puede extender la clase RecursiveFilterIterator de la siguiente manera:

class ExtensionFilter extends RecursiveFilterIterator { /** * Hold the extensions pass to the class constructor */ protected $extensions; /** * ExtensionFilter constructor. * * @param RecursiveIterator $iterator * @param string|array $extensions Extension to filter as an array [''php''] or * as string with commas in between ''php, exe, ini'' */ public function __construct(RecursiveIterator $iterator, $extensions) { parent::__construct($iterator); $this->extensions = is_array($extensions) ? $extensions : array_map(''trim'', explode('','', $extensions)); } public function accept() { if ($this->hasChildren()) { return true; } return $this->current()->isFile() && in_array(strtolower($this->current()->getExtension()), $this->extensions); } public function getChildren() { return new self($this->getInnerIterator()->getChildren(), $this->extensions); }

Ahora puede instanciar RecursiveDirectoryIterator con ruta como un argumento como este:

$iterator = new RecursiveDirectoryIterator(''/path/to/dir''); $iterator = new ExtensionFilter($iterator, ''xml, php, ini''); foreach($iterator as $file) { echo $file . ''<br />''; }

Esto listará los archivos debajo de la carpeta actual solamente.

Para obtener también los archivos en subdirectorios, pase el $ iterator (Iterator ExtensionFIlter) a RecursiveIteratorIterator como argumento:

$iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);

Ahora ejecute el ciclo foreach en este iterador. Obtendrás los archivos con la extensión especificada

Nota: - También asegúrese de ejecutar ExtensionFilter antes de RecursiveIteratorIterator, de lo contrario obtendrá todos los archivos


Querrá usar glob()

Ejemplo:

$files = glob(''/path/to/dir/*.xml'');


Yo uso este código:

<?php { //foreach (glob("images/*.jpg") as $large) foreach (glob("*.xml") as $filename) { //echo "$filename/n"; //echo str_replace("","","$filename/n"); echo str_replace("","","<a href=''$filename''>$filename</a>/n"); } } ?>


LISTA ARCHIVOS y CARPETAS en un directorio (Código Completo):
ps tiene que descomentar la 5ª línea si solo desea extensiones específicas

<?PHP # The current directory $directory = dir("./"); # If you want to turn on Extension Filter, then uncomment this: ### $allowed_ext = array(".sample", ".png", ".jpg", ".jpeg", ".txt", ".doc", ".xls"); ## Description of the soft: list_dir_files.php ## Major credits: phpDIRList 2.0 -(c)2005 Ulrich S. Kapp :: Systemberatung :: $do_link = TRUE; $sort_what = 0; //0- by name; 1 - by size; 2 - by date $sort_how = 0; //0 - ASCENDING; 1 - DESCENDING # # # function dir_list($dir){ $i=0; $dl = array(); if ($hd = opendir($dir)) { while ($sz = readdir($hd)) { if (preg_match("/^/./",$sz)==0) $dl[] = $sz;$i.=1; } closedir($hd); } asort($dl); return $dl; } if ($sort_how == 0) { function compare0($x, $y) { if ( $x[0] == $y[0] ) return 0; else if ( $x[0] < $y[0] ) return -1; else return 1; } function compare1($x, $y) { if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return -1; else return 1; } function compare2($x, $y) { if ( $x[2] == $y[2] ) return 0; else if ( $x[2] < $y[2] ) return -1; else return 1; } }else{ function compare0($x, $y) { if ( $x[0] == $y[0] ) return 0; else if ( $x[0] < $y[0] ) return 1; else return -1; } function compare1($x, $y) { if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return 1; else return -1; } function compare2($x, $y) { if ( $x[2] == $y[2] ) return 0; else if ( $x[2] < $y[2] ) return 1; else return -1; } } ################################################## # We get the information here ################################################## $i = 0; while($file=$directory->read()) { $file = strtolower($file); $ext = strrchr($file, ''.''); if (isset($allowed_ext) && (!in_array($ext,$allowed_ext))) { // dump } else { $temp_info = stat($file); $new_array[$i][0] = $file; $new_array[$i][1] = $temp_info[7]; $new_array[$i][2] = $temp_info[9]; $new_array[$i][3] = date("F d, Y", $new_array[$i][2]); $i = $i + 1; } } $directory->close(); ################################################## # We sort the information here ################################################# switch ($sort_what) { case 0: usort($new_array, "compare0"); break; case 1: usort($new_array, "compare1"); break; case 2: usort($new_array, "compare2"); break; } ############################################################### # We display the infomation here ############################################################### $i2 = count($new_array); $i = 0; echo "<table border=1> <tr> <td width=150> File name</td> <td width=100> File Size</td> <td width=100>Last Modified</td> </tr>"; for ($i=0;$i<$i2;$i++) { if (!$do_link) { $line = "<tr><td align=right>" . $new_array[$i][0] . "</td><td align=right>" . number_format(($new_array[$i][1]/1024)) . "k"; $line = $line . "</td><td align=right>" . $new_array[$i][3] . "</td></tr>"; }else{ $line = ''<tr><td align=right><A HREF="'' . $new_array[$i][0] . ''">'' . $new_array[$i][0] . "</A></td><td align=right>"; $line = $line . number_format(($new_array[$i][1]/1024)) . "k" . "</td><td align=right>" . $new_array[$i][3] . "</td></tr>"; } echo $line; } echo "</table>"; ?>


$it = new RegexIterator(new DirectoryIterator("."), "///.xml/$/i")); foreach ($it as $filename) { //... }

También puede usar las variantes recursivas de los iteradores para recorrer una jerarquía de directorios completa.


if ($handle = opendir(''.'')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, ''.'') + 1)) == ''xml'') { $thelist .= ''<li><a href="''.$file.''">''.$file.''</a></li>''; } } closedir($handle); }

Una forma simple de ver la extensión usando substr y strrpos