-
problema open txt
allora raga ho un problema e sto diventando matto:
Devo confrontare una stringa con quelle contenute dal file txt se sono uguali mettere a 1 la variabile. Per fare ciò uso:
$file = fopen("tai.txt","r+");
while(!feof($file))
{
$riga = (fgets($file,255));
// echo $riga; echo " = "; echo $indirizzo; echo "<br>";
if ($riga == $indirizzo) {$trovato = 1; break 2;};
}
@fclose($file);
Ma anche se $riga è uguale a $indirizzo non mi convalida l'if!
Perchè??!!!??? sono sicuro che sono uguali!!!
Grazie
-
non ho ben capito il tuo problema, tu devi controllare se il valore del file tai.txt è uguale ad una stringa $stringa ??
Se così fai con file_get_contents() ... ciaoo
-
no il contrario nel file txt ci sono tante stringhe! devo controllare se $indirizzo è uguale a una di queste stringhe.
il fatto è che dovrebbe funzionare ma non va....
In pratica dice che AsDfjkdy3 è diverso da AsDfjkdy3 anche se sono identici : | non capisco perchè!
-
Non ho letto attentamente lo script, ma prova ad usare trim() per tutte le stringhe.
Ciaoooo!!!!
-
Prova così:
Codice PHP:
<?
if(strrchr(file_get_contents("tai.txt"),$indirizzo))
$trovato=1;
else
$trovato=0;
echo $trovato;
?>
Però praticamente se il file tai.txt contiene "ciaomamma" sia il controllo su "ciao", che su "mamma", che su "ciaomamma", restituiranno TRUE.
Se le stringhe nel file sono separate da uno spazio o da un altro eventuale delimitatore puoi fare così:
Codice PHP:
<?
$stringhe=array();
$s=explode(" ",file_get_contents("tai.txt")); // al posto di " " metti l'eventuale delimitatore
foreach($s as $str){
$stringhe[]=$str;
}
if(in_array($indirizzo,$stringhe))
$trovato=1;
else
$trovato=0;
?>
In questo viene verificata la presenza nel file della stringa.
-
grazie mi sembra una valida alternativa però non conosco bene queste funzioni.
Io devo controllare stringa per stringa il contenuto del txt.
quindi devo scriverlo nel ciclo? così intendo:
Codice PHP:
$file = fopen("tai.txt","r+");
while(!feof($file))
{
if(strrchr(file_get_contents("tai.txt"),$indirizzo))
$trovato=1;
else
$trovato=0;
}
@fclose($file);
Oppure la funziona controlla stringa per stringa automaticamente? :) che sarebbe buono!
-
Le stringhe nel file tai.txt in che formato sono (una per ogni riga, separate da uno spazio, oppure...??)?
Dimmi questo così ti adatto lo script :wink:
-
-
Ah.
Allora è ancora più semplice :)
Codice PHP:
<?php
if(in_array(trim($indirizzo),file("tai.txt")))
$trovato=1; // il valore di $indirizzo è già presente in tai.txt
else
$trovato=0; // il valore di $indirizzo non è presente in tai.txt
?>
Lo script verifica se il valore di $indirizzo è già presente o meno in una delle righe di tai.txt, se è presente $trovato vale 1,altrimenti vale 0
Funzioni php interessate: file(), in_array(), trim()
-
grazie mille mi hai salvato dalla pazzia!
EDIT:
uffa non capisco secondo me sto coso da i numeri....
perchè non mi trova in ogni caso il file... dice sempre che trovato è = 0
anche se la stringa c'è eccome :\
-
Ho aggiornato il post 9, avevo fatto un errore di battitura :P
Ora dovrebbe funzionare...
-
mi dà cmq lo stesso problema.... secondo lui nel txt non c'è la stringa : |
-
Sei sicuro/a di aver impostato il database correttamente?
Perchè a me lo script funziona perfettamente anche qui su AlterVista...
Magari posta il file txt, lo script in uso per intero e gli esiti dei vari test che hai effettuato ;)
-
La funzione trim deve essere eseguita sulla riga del file e non sull'indirizzo passato perché è nel file che viene aggiunto il carattere "a capo" alla fine di ogni riga.
Codice PHP:
<?php
$righe=file("tai.txt");
$trovato=false;
for($i=0;$i<count($righe);$i++)
if ($indirizzo==trim($righe[$i])) {
$trovato=true;
break;
}
?>
-
perfettamente funzionante grazie funcool!
Adesso però ho un altro problema, ho bisogno di cancellare la riga trovata... che comando posso usare?
cioè potrei farlo trascrivendo riga per riga lasciando fuori quella uguale però mi sembra lungo : |
Non c'è un comando cancella la riga x ?
-
Codice PHP:
<?php
$righe=file("tai.txt");
$trovato=false;
for($i=0;$i<count($righe);$i++)
if ($indirizzo==trim($righe[$i])) {
$trovato=true;
$ass=$i;
break;
}
if($trovato)
$righe[$ass]=NULL;
fwrite(fopen("tai.txt","w+"),implode("",$righe));
?>
-
grazie mille!
Non sòperchè ma non mi va... non la cancella
-
Ho aggiornato il post 16, ora sono certo che va :wink:
-
adesso funziona perfettamente grazie