-
confronto file di testo
Salve a tutti,
ragazzi potete aiutarmi? ho bisogno di avere uno script che mi controlli e mi faccia il confronto di stringhe contenute in due file di testo...precisamente delle prime 14 stringhe
es:
<?
$var=@fopen("pippo.txt","r"); //apro il file .txt
$var2=@fopen("caio.txt","r"); //apro il file .txt
...poi come proseguo???
?>
Grazie
-
Per stringhe intendi righe del file?
-
-
Codice PHP:
<?php
$var=file("pippo.txt");
$var2=file("caio.txt");
$uguale=true;
for($i=0;$i<14;$i++)
if ($var[$i]!=$var2[$i]) {
$uguale=false;
break;
}
if ($uguale)
echo "Le prime 14 righe dei due file sono uguali.";
else
echo "Le prime 14 righe dei due file sono diverse.";
?>
-
scusami funcool ho dimenticato di dirti che dovrebbe darmi in "echo" il numero delle stringhe che trova uguali nei due file...
es.
pippo.txt (12ABCDX12S)
caio.txt (12ABXXXXXX)
4 caratteri uguali...
Grazie Mille
-
Potresti utilizzare il termine righe perché non sei così chiaro. Vuoi sapere quanti caratteri uguali ci sono per riga e quante righe sono uguali?
-
hai ragione nn sono stato chiaro...
cioè dovrebbe anche contarmi le stringhe uguali che trova sempre nelle prime 14...ovviamente per ogni riga
-
Scusate se mi intrometto, ma per essere più chiaro potresti fare un esempio di quello che c'è nel file?
Non ho capito se ci sono lettere singole in ogni riga o più parole...
-
ci sono lettere o stringhe singole...quindi deve confrontare quelle uguali nei due file e contemporanemanete contarle...in definitiva deve darmi il numero di quelle che ha trovato uguali...Grazie
-
Codice PHP:
<?php
$var=file("pippo.txt");
$var2=file("caio.txt");
$contatore=0;
for($i=0;$i<14;$i++)
if ($var[$i]==$var2[$i]) {
$contatore++;
}
echo "Ci sono $contatore righe uguali";
?>
Teoricamente dovrebbe funzionare....
-
Quindi devi contare il numero di righe uguali?
-
purtroppo non funziona l'ultimo script...
funzionava il primo che mi hai dato...
possibile che non riesco a spiegarmi?
ho due file che salvano dei valori:
file1: 12X12X333SSSSS <---------confrontare e contare i caratteri
file2: 12DDDDDDDDDDD <---------confrontare e contare i caratteri
questi due file hanno in comune soltanto i primi due valori (12)
quindi i valori contati sono 2 altrimenti erano 0
Questo è quanto dovrebbe fare lo script...
Grazie Funcool
-
Ma parli di righe o di caratteri? Spiegati meglio.
-
-
Codice PHP:
<?php
$var=file_get_contents("pippo.txt");
$var2=file_get_contents("caio.txt");
$contatore=0;
for($i=0;$i<14;$i++)
if (substr($var,$i,1)==substr($var2,$i,1))
$contatore++;
echo $contatore." caratteri uguali";
?>
-
Grazie Mille Funcool funziona!
EDIT:
forse ho esultato presto...
nel senso che parte del problema l'abbiamo o meglio l'hai risolto...però a me servirebbe che lui mi contasse queste corrispondenze a gruppi di 14 caratteri per volta...
Cioè lui in questo modo mi confronta le prime 14 stringhe...
insomma dovrebbe fare:
da 0 a 14
da 15 a 29
da 30 a 44
e cosi via...
ci vogliono più contatori???...
-
Codice PHP:
<?php
$var=file_get_contents("pippo.txt");
$var2=file_get_contents("caio.txt");
$contatore=0;
$contatore1=0;
//ciclo dalla riga 1 alla 14
for($i=0;$i<14;$i++)
if (substr($var,$i,1)==substr($var2,$i,1))
$contatore++;
echo $contatore." caratteri uguali";
//ciclo dalla riga 14 alla 29
for($i=14;$i<29;$i++)
if (substr($var,$i,1)==substr($var2,$i,1))
$contatore1++;
echo $contatore1." caratteri uguali";
ecc...
?>
ti basta fare più cicli consecutivi, se ho capito bene...
-
avevo provato anch'io cosi...purtroppo non funziona... :(
-
Secondo me dovresti fare due cicli annidati uno (quello esterno) per le righe e uno (interno) per i caratteri di ogni riga....se ho capito il problema...
Ciao
-
quindi cosa mi consigli di fare?
-
Codice PHP:
<?php
$var=file_get_contents("pippo.txt");
$var2=file_get_contents("caio.txt");
$gruppi=ceil(strlen($var)/14);
for($j=0;$i<$gruppi;$j++) {
$contatore=0;
for($i=0;$i<14;$i++)
if (strlen($var)<=$j*14+$i || strlen($var2)<=$j*14+$i)
break;
elseif (substr($var,$j*14+$i,1)==substr($var2,$j*14+$i,1))
$contatore++;
echo $contatore." caratteri uguali";
}
?>
-
mmm...non mi da nessun Output...e nessun messaggio di errore ma non trova nessun valore uguale...non funge...Grazie sempre Funcool
-
Modifica questa riga:
Codice PHP:
for($j=0;$i<$gruppi;$j++) {
In questo modo:
Codice PHP:
for($j=0;$j<$gruppi;$j++) {
-
forse sto chiedendo di fare una cosa "impossibile"...meglio che spieghi...vorrei organizzare un piccolo script per le scommesse di calcio (totoamici)...inserendo appunto 14 squadre di calcio...da poter inserire i valori (1X2)...ora c'è un file che si kiama vincente.txt (contenente la colonna vincente e modificato a mano da me di volta in volta) ed un file chiamato colonne.txt che contiene le colonne dei partecipanti...ora volevo automatizzare il tutto con uno script che mi effettuasse i controlli dei punti quindi dei valori contenuti nelle colonne.txt con quelle nei file vincente.txt...ecco perchè chiedevo un confronto tra valori di 14 per 14 alla volta...altrimenti mi controlla anche le altre colonne dei partecipanti...Non so se sono stato chiaro...
-
Ma ogni riga è formata dai 14 caratteri?
-
allora posso decidere di io se:
file colonne.txt
1X21X2111111XX12X11222X21212
oppure:
file colonne.txt
1X21X2111111XX
1X21X2111111XX <-----forse sarebbe meglio questa soluz.
magari consigliami tu...
invece vincente.txt (che contiene un unica riga):
12x22211xx121x
-
E' meglio fare una riga per ogni persona.
Codice PHP:
<?php
$var=file("colonne.txt");
$var2=file("vincente.txt");
for($j=0;$j<count($var);$j++) {
$contatore=0;
for($i=0;$i<strlen($var2);$i++)
if (substr($var[$j],$i,1)==substr($var2,$i,1))
$contatore++;
echo $contatore." caratteri uguali";
}
?>
-
cosi non funge...mi sa che mi conta il numero delle riga del file colonne.txt (penso)...infatti ho provato a fare 3 riga e mi conta tre zeri 000
-
Sì, infatti conto il numero di righe del file colonne, perché ogni riga dovrebbe contenere le 14 previsioni di ognuno.
-
ok...però dovrebbe stamparmi a video il numero esatto delle corrispondenze trovate non il numero di righe che ci sono...perchè nn funge! :crycry: