Preia nume fisiere dintr-un director

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

Preia nume fisiere dintr-un director

salut, am si eu o intrebare cum fac un script care imi preia fisierele dintr-un folder? adica am un folder care pun fisierele:
acasa.doc
retete.doc
filme.xml
etc

si acest script preia automat fisierele intr-un php adica preia numele fiserului care se gaseste in folderul x.
si mai ales si fara extensie.
Astept raspuns. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Salut
Ca sa preiei in PHP numele fisierelor dintr-un director, precum si alte informatii despre fisierele din director (marime, data ultimei accesari), se poate folosi: DirectoryIterator.
Uite un astfel de script:

Cod: Selectaţi tot

<?php
// get file names - www.coursesweb.net
$dir = 'coursesweb/';            // nume director
$files = array();       // va contine numele fisierelor

// creaza obiect de lucru cu directorul
$objDI = new DirectoryIterator($dir);

// parcurge directorul
foreach($objDI as $fileinfo) {
  // daca e fisier, adauga numele in array $files, fara extensie
  if($fileinfo->isFile()) {
    $files[] = preg_replace('/(\.[a-z0-9]{1,4})$/i', '', $fileinfo->getFilename());
  }
}

// Test
var_export($files);
?>
Pentru mai multe exemple despre DirectoryIterator, vezi tutorialul: DirectoryIterator - obtine informatii despre fisiere si directoare.

PySnake[1337] Mesaje:3
Salut, ai putea folosi functia predefinita scandir() si mai apoi cu ajutorul expresiilor regulate elimini extensia.:)

Varianta lui Marplo e foarte eleganta.

trif Mesaje:500
salut, am folosit varianta lui marplo care este:

Cod: Selectaţi tot

<?php
// get file names - www.coursesweb.net
$dir = 'coursesweb/';            // nume director
$files = array();       // va contine numele fisierelor
// creaza obiect de lucru cu directorul
$objDI = new DirectoryIterator($dir);
// parcurge directorul
foreach($objDI as $fileinfo) {
  // daca e fisier, adauga numele in array $files, fara extensie
  if($fileinfo->isFile()) {
    $files[] = preg_replace('/(\.[a-z0-9]{1,4})$/i', '', $fileinfo->getFilename());
  }
}
// Test
var_export($files);
?>
Dar imi apare asta:

Cod: Selectaţi tot

array ( 0 => 'Cand cu Domnul umblam',
 1 => 'nume_fisier',
 2 => 'nume_fisier2', )
si tot asa.
AM mai preluat de pe link-ul care l-a scris asta:

Cod: Selectaţi tot

objDI = new DirectoryIterator(__DIR__);
foreach($objDI as $fileinfo) {
  // daca e fisier
  if($fileinfo->isFile()) {
    echo $fileinfo->getFilename() .'<br/>';
  }
}
 
Si imi merge dar imi apare extensia.
am incercat sa fac sa nu mai aibe extensie dar nu am reusit.
Multumesc anticipat, astept raspuns. cu stima trif.
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Pai apare array (...) fiindca asa returneaza functia var_export() care e pusa doar de test, puteai cel putin sa inlocuiesti cu un cod ca sa iti afiseze datele din array-ul $files cum vrei.
De exemplu, in loc de var_export($files);:

Cod: Selectaţi tot

echo implode('<br/>', $files);
 
Pentru stergerea extensiei dintr-un nume de fisier, se poate aplica aceasta sintaxa:

Cod: Selectaţi tot

$numef = 'nume_fisier.ext';
$numef = preg_replace('/(\.[a-z0-9]{1,4})$/i', '', $numef);
 

Subiecte similare