LECTURA I ESCRIPTURA D'ARXIUS DE TEXT AMB PHP.

 

En aquesta ocasió veurem uns exemples pràctics de lectura i escriptura de fitxers de text usant PHP. El primer lloc, hem de crear un arxiu de text (amb qualsevol editor, notepad per exemple, encara que també pot valer el bloc de notes de Windows) amb algunes línies de text.

 

 

LECTURA DE FITXERS

Per llegir un arxiu de text línia a línia en PHP utilitzarem la funció fgets (). Per exemple si volem llegir línia per línia el fitxer 'fitxer.txt' que es troba situat a la mateixa carpeta que l'arxiu 'leer.php', hem d'escriure a l'arxiu PHP:

<? Php // Exemple aprenderaprogramar.com

$arxiu=fopen ("fitxer.txt", "r");

while(!feof($arxiu)) {

fgets($arxiu). "<br />";

}

fclose($arxiu);

?>

Com podem observar, el primer que hem de fer és obrir el fitxer 'fitxer.txt' i després anar llegint línia a línia fins arribar al final. Recordem que "r" és la manera d'obertura que obre l'arxiu només per a lectura. La lectura comença a l'inici de l'arxiu. Després tanquem el fitxer.

Amb això aconseguirem mostrar per pantalla el contingut del fitxer 'fitxer.txt' tal com podem veure a la següent imatge d'exemple.

El contingut del fitxer de text "fitxer.txt" se suposa que era el següent:

Prova d'escriptura

això és una línia de text

això és una línia de text

això és una línia de text

això és una línia de text

això és una línia de text

fi de la prova

El que hem fet amb el nostre petit programa és anar extraient línies mentre no es detecta el final del fitxer (feof). La condició while (! Feof ($ file)) també podria haver-se escrit d'aquesta altra manera: while (feof ($ file) == false), amb el que obtindríem el mateix resultat.

 

ESCRIPTURA DE FITXERS

Per escriure un arxiu de text en PHP podem utilitzar la funció fwrite (). Per exemple si volem escriure línia per línia un arxiu 'fitxer.txt' que es trobi ubicat a la mateixa carpeta que l'arxiu 'escribir.php', hem d'escriure a l'arxiu PHP:

<? Php // Exemple aprenderaprogramar.com, arxiu escribir.php

$arxiu=fopen("fitxer.txt", "w");

fwrite($arxiu "Això és una línia de text". PHP_EOL);

fwrite($arxiu, "Una altra més". PHP_EOL);

fclose($arxiu);

?>

Nota: PHP_EOL (end of line) introdueix un salt de línia en PHP. Mitjançant la concatenació amb un punt forcem el salt de línia després del text introduït.

Un cop escrivim al nostre navegador la ruta del fitxer escribir.php s'executa el codi associat. Després de l'execució, podem veure el fitxer creat amb un editor de text qualsevol i observarem el següent contingut:

Tenir en compte que la manera d'obertura d'arxiu que hem fet servir és w. Si recordem el significat d'aquesta manera:

w: Obre el fitxer només per a escriptura. L'escriptura comença a l'inici de l'arxiu, i elimina el contingut previ de l'arxiu. Si l'arxiu no existeix, intenta crear-lo.

 

AFEGIR CONTINGUT A UN FITXER DE TEXT

A vegades no volem reemplaçar el contingut que hi hagi en un fitxer de text, sinó afegir un contingut addicional al final del que ja existeixi en el mateix. Anem a veure com podem fer-ho.

A tall d'exemple afegirem unes línies de text al final del fitxer anteriorment escrit:

<? Php // Exemple aprenderaprogramar.com

$file=fopen ("fitxer.txt", "a");

fwrite($file, "Afegim línia 1". PHP_EOL);

fwrite($file, "Afegim línia 2". PHP_EOL);

fclose($file);

?>

Tenir en compte que la manera d'obertura d'arxiu que hem fet servir és a. Si recordem el significat d'aquesta manera:

a: Obre l'arxiu per només escriptura. L'escriptura començarà al final de l'arxiu sense eliminar el contingut previ existent. Si el fitxer no existeix s'intenta crear.

Ara podem veure el fitxer creat amb un editor de text qualsevol i observarem el següent contingut (no s'ha reemplaçat el contingut existent, sinó que s'ha ampliat):

Observem que hem afegit les dues noves línies al final del fitxer.

 

EXERCICI

Crea el següent codi PHP:

a) Una funció (tipus procediment, no hi ha valor retornat) anomenada escriureNumerosMod que rebi dos paràmetres: un array de valors sencers i una cadena de text que pot ser "sobreescriure" o "ampliar". La funció ha de procedir a: escriure cada un dels nombres que formen el contingut de l'array en una línia d'un arxiu dadesExercici.txt usant la manera d'operació que s'indiqui amb l'altre paràmetre. Si l'arxiu no existeix, ha de crear-lo.

Exemple: La matriu que es passa és $numeros=array(5,9,3,22); i la invocació que s'utilitza és escriureNumerosMod ($numeros, "sobreescriure"); En aquest cas, s'ha d'eliminar el contingut que existís prèviament a l'arxiu i escriure en ell 4 línies, cadascuna de les quals contindrà els números 5, 9, 3 i 22.

b) Una funció (tipus procediment, no hi ha valor retornat) anomenada llegirContingutFitxer que rebi com a paràmetre la ruta del fitxer i mostri per pantalla el contingut de cadascuna de les línies del fitxer.

c) Crea codi php on a través de la funció escribirNumerosMod escriguis en el fitxer els números 2, 8, 14. Després, mitjançant la funció llegirContingutFitxer mostra el contingut del fitxer. Ara amb la funció escriureNumerosMod amplia el contingut del fitxer i afegeix els números 33, 11 i 16. Mostra novament el contingut del fitxer per pantalla. Finalment, escriu el fitxer passant-li un array amb els número 4, 99, 12 i paràmetre << sobreescriure >> per eliminar les dades que existissin prèviament. Mostra el contingut del fitxer per pantalla i un missatge de comiat.