contare frasi che si ripetono

  • Creatore Discussione Creatore Discussione nim
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.

nim

Utente Attivo
11 Ott 2011
96
0
0
salve, dovrei contare da un file.txt quante volte è stata scritta ciascuna frase...praticamente gli utenti scrivono ciò che vogliono dirmi in un form e tramite php quello che scrivono mi verrà a comparire nel file.txt . mettiamo che scrivano "ciao come va", "come stai","ciao come va". io vorrei che in una pagina apparisse (per seguire il mio esempio) che" ciao come va" è stato scritto 2 volte mentre "ciao come stai " è stato scritto 1 sola volta.
specifico che non so che cosa scriveranno quindi non credo di poter usare un file_get_contents..semplicemente le frasi uguali dovrebbero apparirmi con di fianco un numero che specifica quante volte è stata scritta.
se servono chiarimenti sono qui.
grazie in anticipo :)
 
Perché non provi semplicemente a prelevare tutte le frasi e memorizzarle in un array. Così a quel punto controlli la prima e vedi quante volte è ripetuta nell'array, fai lo stesso con la seconda e così via. Ovviamente tutte quelle che hai già contato non le devi ricontare mettendo un valore NULL nella stringa. Così stamperai di volta in volta quante sono le frasi ripetute.
 
sul serio credo di non sapere come fare.. cioè io che non so le frasi che verranno digitate come posso racchiuderle in un array?
 
Uno script di questo tipo dovrebbe funzionare:
PHP:
<?php
// supponendo che ogni frase sia su una riga
$lines = file('frasi.txt');

$count = array();
foreach ($lines as $line) {
    $count[$line]++;
}

print_r($count);
 
fantastico funziona!!!
mi potresti spiegare perchè hai messo "++" dopo " $count[$line]++;" cioè non ho capito tanto bene il funzionamento..
 
Possibile alternativa:
PHP:
print_r(array_count_values($lines));
 
ok..comunque in questo caso il "<br>" per andare a capo dove si deve inserire?
 
ciao
per incolonnare meglio io proverei a fare così, al posto di print_r (o anche inserendo in una table)

PHP:
<?php
//...........
foreach($count as $frase => $volte){
	$plurale="e";
	if($volte==1){$plurale="a";}
	echo "la frase $frase è stata ripetuta $volte volt".$plurale."<br>";
}
?>
 
grazie a tutti...specialmente borgo italia...viene molto più ordinato.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili