leggere i file in una sottodir

peppepegasus

Utente Attivo
20 Ott 2006
108
0
0
ciao,

mi trovo a dover leggere i dati in una sottodir: nella dir principale ci sono altre dir e i file da leggere si trovano in ciascuna di queste dir, ma non riesco a capire come fare..per leggere in una dir uso questo codice:

PHP:
$directory="nome_dir_principale";

print "Import dati della directory: <b>".$directory."</b><br>";

$file_elaborati=0;
$dati_inseriti=0;

if ($handle = opendir("$directory")) { // if principale
	while (false !== ($file = readdir($handle))) {
		echo "nome file: $file <br/>";
//		prende solo i file... escludendo le directory
		if (!is_dir($file)) {
....

come faccio a dirgli che trovata la prima dir ci deve entrare dentro e leggere da lì i file, quando ha letto tutti i file di quella dir deve risalire e passare alla seconda dir etc..fin quando non ha letto in tutte le dir.
spero qualcuno mi può dare una mano..grazie..
ciao..
 

peppepegasus

Utente Attivo
20 Ott 2006
108
0
0
ho trovato la soluzione con i while che mi pare funzioni..
ho un altro problema..come si fa a leggere un file dopo un certo numero di righe?
grazie..
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
In questa maniera:
PHP:
<?php
$read = file('ciao.txt');
$data = "";
$from = 51;

for($i = 0; $i < $from - 1; $i++)
  $data .= $read[$i] . "\n";
?>
Se non sbaglio c'era un metodo più semplice, ma è tardi e non ho voglia di cercare. Male che va mi senti domani :D
 

peppepegasus

Utente Attivo
20 Ott 2006
108
0
0
ciao,

vi ringrazio per i suggerimenti però..io so diquante righe deve saltare..non so i byte..c'è un modo per calcolarlo? ho usato il ciclo for come suggerito da alessandro1997 ma non mi va, vi posto il codice
PHP:
*********** INIZIO GESTIONE FILE
if (!$p_file = fopen($directory2."/".$file,"r")) {
echo "Spiacente, non posso aprire il file $nome_file";
} else {
print "Elaborazione file ".$file." in corso.... <br/> ";
while(!feof($p_file)) { // leggi fino alla fine del file
//$linea = fgets($p_file, 255);
$data ="";
$from = 19;

for($i = 0; $i < $from - 1; $i++) {
$data .= $p_file[$i] . "\n";
echo "riga ke nn serve: $p_file[$i] <br/>";
}
$linea = fgets($p_file, 255);
echo "linea: $linea <br />";
$quote = preg_split('#\s+#s', $linea);

ma il sistema non mi funziona..dopo la 19 riga dovrebbe passare alla prima riga utile ma ciò non accade, come mai?
grazie per l'aiuto.
ciao.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Se usi il PHP5 come spero, puoi usare queste funzioni per iterare all'interno della directory:
PHP:
$dir_iterator = new RecursiveDirectoryIterator($directory);
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
// Itera all'interno di tutte le cartelle a iniziare da $directory

foreach ($iterator as $file) {
   if ($file->isFile()) {
      //  qui il tuo ciclo per la lettura del file
   }
}
Per risolvere il secondo caso invece è più complesso perché dipende da cosa devi cercare all'interno del file.
Se è una frase in particolare allora puoi usare una funzione di ricerca all'interno di una stringa, come stripos che trova il carattere iniziale della stringa cercata, da lì puoi iniziare a copiare il file.
Purtroppo non c'è un modo per convertire byte -> stringhe, perché il numero di byte è indipendente dalla lunghezza di una parola, ti basti pensare che dipende dal tipo di codifica della stringa per variare anche di parecchio.
Però puoi sempre leggere il file in un unico colpo con la funzione file_get_contents e trattare poi tutto come una normale stringa.
Se invece come dici sai dove si trova la parola da cercare, allora forse il metodo di Alessandro è il più veloce.
file mette tutto il file in un array dove in ogni elemento dell'array si trova una riga del file, calcolata dalla posizione 0 (il primo carattere) fino al carattere di fine riga.
Se sai qual'è la riga dove si trova la parola da cercare, ti basta fare
PHP:
$riga = file($file_da_cercare); $parola = $riga[numero_di_riga];
e in parola hai la riga del file dove sta la tua parola cercata.
Io lo trovo comunque un p' aleatorio come metodo perché se poi fai una modifica al file o comunque questo non corrisponde dovrai modificare tutto per cercare la parola, secondo me è meglio usare le funzioni di ricerca di stringa.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Leggere il contenuto di una cartella e memorizzare il nome file in mysql PHP 1
K Leggere contenuto di una cartella quando viene aperto il file PHP 6
L Leggere un file .txt tramite FTP e trascriverlo in una RichTextBox Visual Basic 0
S leggere da file e scrivere su file un carattere o una parola alla volta Visual Basic 1
S [C] Leggere i dati da un file e salvarli in una matrice Programmazione 1
D Leggere i file di una cartella ed il loro contenuto PHP 5
2 Leggere una pagine che è nei file temporanei HTML e CSS 1
G leggere file txt e stampare con php il contenuto a video PHP 7
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
C Leggere dati File.XMLcon PHP XML 11
I [Javascript] Leggere "var" da file .js esterno (per google map) Javascript 6
H Interpretare e leggere il file log di sfc/scannow. Windows e Software 0
P leggere file .csv con javascript/jquery Javascript 11
Monital Leggere un file php contenente dati json PHP 10
Trapano Leggere un file .txt dal fondo PHP 7
Francesco Polese Leggere linea da un file ed eliminarla PHP 2
F Leggere file contenuti in cartella e modificarne il nome PHP 3
M Leggere dati da file excel in base al nome del foglio di lavoro PHP 0
napuleone type="file" leggere con js Javascript 3
M Leggere file di grandi dimensioni Java 2
D leggere il contenuto di un file di testo in un file .JS Javascript 11
L file. leggere dall'ultima riga alla prima PHP 1
L [c++] Problema leggere file txt riga per riga C/C++ 0
Trapano [risolto] Leggere da un file txt in ordine inverso PHP 2
F leggere file xls Classic ASP 0
neo996sps [risolto] Usare PHP per leggere da file XML PHP 3
M leggere determinati punti di un file txt PHP 2
M Problema leggere su file di testo remoti PHP 11
E Leggere file tramite FTP/TLS PHP 11
A Leggere file txt e azioni su form PHP 1
G leggere file xml su server remoto Ajax 0
F Leggere e salvare caratteri da file di testo PHP 2
L leggere file xml dove i tag sono del tipo <stringa:altra_stringa> PHP 0
L leggere un file xml XML 1
L word: leggere i file temporanei Windows e Software 1
LaKanka Leggere dati da file xml PHP 19
F leggere file txt zippato su altro server, come fare ? PHP 4
N leggere/sostituire/restituire file txt PHP 1
T Leggere file in directory e sottodirectory con ASP Classic ASP 3
Vale1976 leggere file da altro pc in rete PHP 2
S [VB.net 2005] Leggere file di testo come un database Programmazione 0
E Leggere file txt da altro server Classic ASP 4
G Leggere file testo lato client Javascript 1
M Leggere in un report il valore di una casella combinata di una maschera Database 0
otto9due Leggere valore da array multidimensionale a chiavi dinamiche PHP 1
D PHP leggere cartella di Windows PHP 1
S Leggere dati da API e visualizzarli PHP 0
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
maxbossi Attenzione alle TRUFFE: Leggere attentamente!!! Annunci servizi di Social Media Marketing 0

Discussioni simili