Ho provato questo codice, ma anche se funziona, mi produce una serie di linee aggiuntive fra i record. Ho provato a togliere \n nella save, ma mi vengono i record tutti di seguito. Chi è che mi aggiunge le linee?
codice:
// Check if a string is a whole number
function is_whole_number($var){
return (is_numeric($var)&&(intval($var)==floatval($var)));
}
// Load any text file (Unix, Win, Mac, ...) and strip end of line chars
// Better and faster than file()
function loadFile($filename) {
$fp = fopen($filename, "rb");
$buffer = fread($fp, filesize($filename));
fclose($fp);
$lines = preg_split("/\r?\n|\r/", $buffer);
return $lines;
}
// Save an array of strings to a text file
function saveFile($filename, $array) {
$fp = fopen($filename, "w+");
for ($i=0; $i<sizeof($array); $i++) {
fputs($fp,$array[$i]."\n");
}
fclose($fp);
}
// Read counter file, search for name
// If found update, otherwise create (initial value = 1)
function updateCounter($counterName) {
$found = 0 ;
$append = 0 ;
$counterFile = "counters.txt";
if (file_exists($counterFile)) {
$fileRecords = loadFile($counterFile);ECHO "[".sizeof($fileRecords)."]";
for ($i=0; $i<sizeof($fileRecords); $i++) {
list($aName,$counterValue) = explode(":",trim($fileRecords[$i]));
if (strcmp($aName,$counterName) == 0) {
if (is_whole_number($counterValue)) {
$counterValue++ ;
}
else {
$counterValue = 1 ;
}
$fileRecords[$i] = $counterName . ":" . $counterValue ;
$found = $counterValue ;
break $i ;
}
}
$append = sizeof($fileRecords) ;
}
if ($found == 0) {ECHO $last . "!";
$counterValue = 1 ;
$fileRecords[$append] = $counterName . ":" . $counterValue ;
}
saveFile($counterFile, $fileRecords) ;
return $counterValue ;
}