|
Introduciamo ora qualche funzione che ci
può venire in aiuto quando dobbiamo manipolare files presenti sul nostro
spazio web oppure vogliamo recuperare files da remoto.
Il PHP, rispetto ad altri linguaggi, permette infatti con una singola
chiamata non solo di recuperare (e quindi poter leggere/scrivere) un file
locale, ma anche di recuperare un file che sia su un altro spazio web
oppure su un server FTP in maniera trasparente, vale a dire senza dover
utilizzare altre chiamate.
* fopen()
Anzitutto, prima di poter leggere o scrivere
un file è necessario aprirlo. Questa funzione, che accetta due parametri
di input (il nome del file e il tipo di operazione - lettura/scrittura/append
e altre combinazioni) ritorna il descrittore del file, descrittore che
utilizzeremo per fare le altre successive operazioni.
Questa funzione, come già anticipato, permette di aprire anche un file
remoto messo su uno spazio web (e quindi recuperabile tramite il
protocollo HTTP) o su server FTP; tutto questo permanendo identica la
sintassi: la funzione si comporterà diversamente a seconda del nome di
file passatole (se inizierà con http:// tenterà di recuperare il file
dal webserver remoto; se inizierà per ftp:// tenterà di prenderlo dal
server FTP remoto; altrimenti lo considererà come un file locale).
Le modalità di apertura di un file sono le seguenti:
-
'r' - apre il file per la sola lettura
e sistema la "testina" di lettura all'inizio del file
-
'r+' - apre il file per
lettura/scrittura, posizionando la testina all'inizio del file
-
'w' - apre il file per la scrittura,
troncandone il contenuto se esiste; se non esiste tenta di crearlo;
mette la testina all'inizio
-
'w+' - idem come 'w', ma lo apre per
la lettura/scrittura
-
'a' - apre il file per la sola
scrittura, mettendo però la testina a fine file
-
'a+' - come sopra, ma lo apre per la
lettura/scrittura
Es.
| $fp = fopen("/home/marco/file.txt",
"r");
$fp = fopen("http://www.sito.com/", "r");
$fp = fopen("ftp://user:password@sito.com/",
"w");
($fp è quello che viene chiamato "file handle" o, in
italiano, "descrittore di file") |
* fgets()
Questa chiamata permette di leggere da un
file aperto un certo numero di caratteri specificati. Tale funzione ha la
particolarità di terminare prima di aver letto i caratteri specificati se
incontra un newline (o un "fine file")
Utile per la lettura di linee singole da un file
* fputs()
Opposto della funzione fgets(), questa
chiamata permette di scrivere in un file una data stringa. La posizione
nella quale tale stringa verrà scritta dipende solamente dalla posizione
corrente della testina di scrittura.
* fseek()
Questa funzione permette di spostare la
testina di lettura/scrittura del file corrente in una certa posizione.
Accetta in input due parametri: il descrittore di file e la posizione.
Notare che non funziona su files remoti (http:// o ftp://) ma solo su
files locali
* fclose()
Chiude il descrittore di file passatole
Il seguente esempio esegue una copia di un file in un altro (esempio
puramente didattico: in PHP esiste la funzione copy() che esegue la copia
di due files):
Es.
| <?PHP
$fp1 = fopen('leggi.txt', 'r');
$fp2 = fopen('scrivi.txt', 'w');
while ($buf = fgets($fp1, 4096)) {
fputs($fp2, $buf);
}
fclose($fp1);
fclose($fp2);
?> |
|