PDA

View Full Version : [PHP] Alla ricerca della riga richiesta


error 404
06-03-2008, 15:25
Rieccomi qua,
volevo sapere se c'è un modo per poter prelevare una determinata riga da un .txt.

Es. questo è il testo:
abc
74
0
niente
...
se io volessi prendere solo la terza riga come faccio?
O meglio ancora: da una determinata colonna ad un'altra in una data riga.
(mi accontento della prima :D ).

Grazie ciao

Xfree
06-03-2008, 17:07
Per quel poco che so di PHP :stordita:


$nomefile = 'file.txt';
$righe = file ($nomefile);


Il file file.txt viene letto integralmente nel vettore $righe; da qui puoi, con un ciclo ad esempio il foreach, fare la scansione di tutti gli elementi, oppure dato che a te serve un elemento specifico ci accedi direttamente con l'indice.

error 404
06-03-2008, 17:29
Ho trovato in parte una soluzione.

La funzione split() è perfetta, ma la devo integrare in un certo modo.

Prendendo questo esempio:
// Delimitatori di testo: barre, punti, trattini
$data = "04/30/1973";
list ($mese, $giorno, $anno) = split ('[/.-]', $data);
echo "Mese: $mese; Giorno: $giorno; Anno: $anno<br>\n";
?>
Per fargli leggere il fiel ho fatto così:
$myFile = $nome.".txt";
$fh = fopen($myFile, 'r');

$data = $myFile;
e tutte le altre cose
però mi legge solo la prima variabile...

@Xfree: ora provo la tua soluzione.

Xalexalex
06-03-2008, 20:30
Eh ma così non funge :D
Se vuoi leggere il file ti tocca

$file_cont=fread($fp,filesize($percorsofile));

se vuoi leggerlo tutto.

Se invece vuoi leggerlo una riga per volta, la funzione file() è quello che fa per te :D

error 404
07-03-2008, 13:43
Non riesco ad utilizzare nessuna delle due :stordita:
Non è che mi potresti fare la scrittura precisa? (il file da aprire è $nome".txt").

Comunque la soluzione di lettura a singola riga non mi va più bene, perchè devo riportare più valori accanto a più frasi precise per ognuno.

error 404
07-03-2008, 18:24
Già che ci sono chiedo anche come faccio a far cambiare una variabile a seconda di una scelta fatta tramite i menu a tendina, tipo:
<select>
<option selected>Aumenta ad di 1</option>
<option>Aumenta ad di 2</option>
<option>Aumenta ad di 3</option>
</select>
la variabile da cambiare è $ad.

Xfree
07-03-2008, 19:33
Ma guarda..io per fare una prova al volo ho fatto così :
ho copiato in un file di testo chiamato file.txt


abc
74
0
niente


e poi ho creato uno script babbissimo :D


<?php
$nomefile = 'file.txt';
$righe = file($nomefile);
echo $righe[2];
?>


Così sul browser mi compare 0, che è quanto tu avevi richiesto inizialmente di prendere la terza riga; cos'è esattamente che non ti funziona?

error 404
07-03-2008, 21:15
Così sul browser mi compare 0, che è quanto tu avevi richiesto inizialmente di prendere la terza riga; cos'è esattamente che non ti funziona?No, non è che non mi funzionava qualcosa, non sapevo come usarlo :mc:

Comunque adesso è perfetto... o quasi: il nome del file txt è variabile e in altri campi ho usato
$nome_file = $nome".txt";
$righe = file($nome_file);
e funzionava, ma con questo non viene. Cioè gli devo dare il nome preciso tipo "abc.txt";.

Xfree
08-03-2008, 10:11
No, non è che non mi funzionava qualcosa, non sapevo come usarlo :mc:

Comunque adesso è perfetto... o quasi: il nome del file txt è variabile e in altri campi ho usato
$nome_file = $nome".txt";
$righe = file($nome_file);
e funzionava, ma con questo non viene. Cioè gli devo dare il nome preciso tipo "abc.txt";.

E certo che non ti funziona così; se vuoi separare il nome del file dall'estensione
devi usare la concatenazione delle stringhe che in PHP si fa con l'operatore punto.


<?php
$nome = 'file';
$nomefile = $nome.'.txt';
$righe = file($nomefile);
echo $righe[2];
?>


Così alla stringa file viene concatenata la stringa .txt ottenendo nella variabile nomefile la stringa file.txt.
Chiaramente l'echo è solo un esempio ma puoi farci quello che vuoi. :p

error 404
08-03-2008, 11:52
Che pirla che sono! :doh:

Per un puntino, che per di più nelle volte precedenti l'ho sempre usato :D

Bè allora grazie mille, non è che sai aiutarmi anche per il menu a tendina+cambio variabile (http://www.hwupgrade.it/forum/showpost.php?p=21458152&postcount=6)?

EDIT: non mi funza :(

<?php
$nome = 'file';
$nomefile = $nome.'.txt'; //Lettura singole righe//
$righe = file($nomefile);
echo "Nome: ".$righe[0]."<br/>";
?>

mi appare solo "nome:", ma non il valore.

Xfree
08-03-2008, 14:22
:mbe:
Strano..:what: A me funziona.