View Full Version : [PHP] c'è un modo per usare fread dinamicamente?
Mi spiego meglio,anzi faccio proprio un esempio,prendiamo un file di testo dal quale leggo dei commenti,al momento che trovo il carattere "[" seguito poi da un numero che memorizzo in un contatore e seguito successivamente dal carattere "]" per esempio [1].Se ne file ci sono 9 commenti la funzione che andrò a scrivere ritornerà 9 che è l'ultimo numero letto.Ora sorge un problema,dato che ho scritto la funzione e funziona correttamente fino a 10 utilizzando nel ciclo while(!feof($puntatore_file)) una fread($puntatore_file,1) solo che da 10 in poi rinizia a contare da 1,come è possibile?C'è un qualche modo per leggere il contenuto tra le due parentesi dinamicamente?
anonimizzato
07-04-2010, 18:25
Posta il codice che hai scritto.
Se ogni commento è posto su una riga a sè puoi utilizzare la funzione file() che ti "ritorna" il contenuto dello stesso come un array con N elementi pari alle N righe (commenti) presenti nel file.
Sempre che non abbia frainteso quello di cui hai bisogno.
Ciao.
Questa è la funzione che legge dal file e memorizza l'ultimo numero:
<?php
// conta post
function npost($nomefile){
if (!$p_file = fopen($nomefile,"r")) {
echo "Spiacente, non posso aprire il file";
} else {
while(!feof($p_file)) {
$carattere = fread($p_file,1);
echo $carattere;
if($carattere=="[") $postID= fread($p_file,1);
}
fclose($p_file);
}
return($postID);
}
questa quella per la scrittura su file:
//scrittura sul file
function scrittura($nomefile,$nick,$commento,$postID){
if(($nick!="") && ($nick!="il tuo nickname")){
if(($commento!="") && ($commento!="Scrivi qui il testo")){
$postID++;
$p_file = fopen($nomefile,"a");
if(!$p_file) die("impossibile lasciare un commento,contattare l'amministratore");
$scrivicommento = fwrite($p_file,"[".$postID."] "); //contatore post
$scrivicommento = fwrite($p_file,"<b>".$nick."</b>"."\n");
$scrivicommento = fwrite($p_file,"«".$commento."»");
fclose($p_file);
}
else {
echo "<SCRIPT>alert('Il testo digitato è troppo breve o non valido');";
echo "history.back();</SCRIPT>";
}
}
else {
echo"<SCRIPT>alert('Devi immettere un Nickname valido');";
echo "history.back();</SCRIPT>";
}
}
?>
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.