Leggere i file di una cartella ed il loro contenuto

dannythegreat

Nuovo Utente
1 Set 2009
4
0
0
Ciao a tutti, ragazzi mi sto sbattendo da una paio di giorni senza trovare una soluzione, non sono un esperto di php ma smanetto un po, in prati vi spiego il mio problema..
dovrei creare un codice che mi permetta di leggere dei file txt contenuti in una cartella e leggerne il loro contenuto, o meglio estrarre un valore da me impostato all'interno di questi file txt.
Nel mio caso il valore da estrarre è "online", e vorrei far si che venga incrementata una variabile++ per ogni valore trovato e darmi come risultato finale quanti "online" ha trovato.
Per darvi un'idea migliore di quello che voglio, guardate questa pagina ad ogni profile è associato un file di testo con tutte le sue informazioni, devo solo contare chi è online estraendo quel valore nel file di testo.
Una persona mi ha indicato questo codice ma non funziona
PHP:
$trova = "online";  // Aggiusta te con la giusta stringa corrispondente allo stato online 

// open the current directory by opendir 
$handle_dir=opendir("."); 

while (($file = readdir($handle_dir))!==false) { // Scorri tutti i files della directory 
   /* Note: If you're opening a URI with special characters, such as spaces, you need to encode the URI with urlencode().   
   */ 
   $content = file_get_contents($file, NULL); // E' una prova. Eventualmente devi aggiustare il percorso e il nome del file 
    
   if (stristr($content, $trova)) 
       $online_users = $online_users++; 
} 

closedir($handle_dir); 

echo "Gli utenti online sono $online_users";
Grazie mille in anticipo. Ciao
 
Ultima modifica:
Forse perchè come suggerito dal commento nel codice "Aggiusta te con la giusta stringa corrispondente allo stato online" se cerchi la stringa "<status>true</status>" in un file che contiene "online", non troverai mai nessuna corrispondenza
 
Prova così:

PHP:
<?php
$trova = "online";  // Aggiusta te con la giusta stringa corrispondente allo stato online 

// open the current directory by opendir 
$handle_dir = opendir("txt"); 

$online_users = 0;
while (($file = readdir($handle_dir))!== false) { // Scorri tutti i files della directory 
   /* Note: If you're opening a URI with special characters, such as spaces, you need to encode the URI with urlencode().   
   */
   //if ($file != "." && $file != "..") { 
	if (!is_dir($file)) { 
		$content = file_get_contents("txt/".$file, NULL); // E' una prova. Eventualmente devi aggiustare il percorso e il nome del file 
    
		if (stristr($content, $trova)) {
			$online_users++;
		}
   } 
} 

closedir($handle_dir); 

echo "Gli utenti online sono $online_users";  
?>

Nel mio esempio ho inserito i file .txt in una cartella chiamata "txt" che se vuoi puoi modificare allineando il codice.
 
PHP:
<?php 
$trova = "true";  // Aggiusta te con la giusta stringa corrispondente allo stato online  

// open the current directory by opendir  
$handle_dir = opendir("data");  

$online_users = 0; 
while (($file = readdir($handle_dir))!== false)  // Scorri tutti i files della directory  
   /* Note: If you're opening a URI with special characters, such as spaces, you need to encode the URI with urlencode().    
   */ 
   /*if ($file != "." && $file != "..") */
{  
    if (!is_dir($file)) 
	{  
        $content = file_get_contents("data/".$file, NULL); // E' una prova. Eventualmente devi aggiustare il percorso e il nome del file  
     
        if (stristr($content, $trova)) 
		 { 
            $online_users++; 
         }  
	} 
}

closedir($handle_dir);  

echo "Gli utenti online sono $online_users";   

?>

Cosi funziona perfettamente ho dovuto togliere una parentesi graffa che era in più perchè avevi nascosto l'if ed era rimasta fuori.
Calcola perfettamente i valori trovati grazie mille. :D
 
Ultima modifica:
Mi è venuta un'altra idea, praticamente vorrei far in modo che questo codice diventi una funzione e già l'ho fatto.. però vorrei far si che questa funzione si carichi solo alla fine del caricamento della pagina ... oppure si aggiorni automaticamente ogni tot minuti tipo ajax. Come posso fare? Grazie mille in anticipo ciao
 

Discussioni simili