INTRODUCCIÓ AL MANEIG D'ARXIUS AMB PHP.

 

Quan necessitem crear, guardar, llegir o escriure arxius en la creació de llocs web, el maneig d'aquests es converteix en una prioritat. Per a això, anem a veure una sèrie de funcions i alguns exemples per familiaritzar-nos amb el maneig d'arxius a nivell bàsic en php.

 

 

Fopen

La funció fopen () serveix per obrir fitxers (fitxers). La seva sintaxi general:

<? Php // Exemple

$dona=fopen(arxiu modoDeApertura);

?>

On $fp és el descriptor o identificador del fitxer obert que necessitarem més tard.

fitxer pot ser un arxiu de text, un arxiu amb extensió .php, o fins i tot la URL d'una pàgina web (per exemple http://www.paginaweb.com/). "Obrir" un web amb fopen () pot ser molt útil quan volem comprovar si el web existeix, o si està activa.

Si fitxer comença amb "http: //", s'obre una connexió cap a la web especificada. Sempre ha posar-se-una barra (/) al final.

Si fitxer comença amb "ftp: //", s'obre una connexió al servidor especificat.

Si fitxer no comença amb cap de les coses anteriorment dites, s'obre una connexió "directa" amb l'arxiu especificat. Si no existeix l'arxiu o direcció especificades, es retorna un error.

Hi ha diferents maneres d'obertura d'arxius, anem a veure els més habituals.

A l'hora d'obrir un arxiu, cal saber de quina manera volem obrir-lo. Podem obrir-lo per a escriptura i lectura, però de diferents formes:

Camí

Observacions

r

Obre l'arxiu només per a lectura. La lectura comença a l'inici de l'arxiu.

r+

Obre l'arxiu per a lectura i escriptura. La lectura o escriptura comença a l'inici de l'arxiu.

en

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

w+

Obre l'arxiu per a escriptura i lectura. La lectura o escriptura comença a l'inici de l'arxiu, i elimina el contingut previ. Si l'arxiu no existeix, intenta crear-lo.

1

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

a+

Obre l'arxiu per a lectura i escriptura. La lectura o escriptura començarà al final del fitxer, sense afectar el contingut previ. Si el fitxer no existeix s'intenta crear.

 

Exemples

<? Php // Exemple

$fp=fopen("/apr2/fichero.txt", "r" );

$fp=fopen("/apr2/fichero2.txt", "w" );

$fp=fopen("http://www.aprendreaprogramar.com/texto.txt", "a+" );

$dona=fopen("ftp://ftp.elmundo.es/fichero.txt", "w" );

?>

Ara bé, amb aquesta simple instrucció només tindrem l'arxiu obert per llegir, escriure, o llegir i escriure. Però ara haurem de fer ús de les altres instruccions per escriure o recuperar les dades que estimem oportuns.

  

FUNCIÓ fclose

La funció fclose (identificadorDelFitxer) tanca un arxiu obert.

Aquesta funció ha de ser utilitzada després d'obrir i manipular l'arxiu com veurem en els següents exemples.

 

FUNCIONS FGETS I FEOF

La funció fgets () recupera el contingut d'una línia d'un arxiu. La seva sintaxi general és:

<? Php

// Exemple

fgets(descriptorDelFitxer);

?>

 

Exemple

<? Php

// Exemple

// Llegim la primera línia de fitxer.txt

// Fitxer.txt han d'estar a la mateixa carpeta que el fitxer php

// Fitxer.txt és un arxiu de text normal creat amb notepad, per exemple.

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

$linea=fgets($fp);

fclose($fp);

?>

Ara bé, amb això només llegirem la primera línia del fitxer de text, si volguéssim llegir línia a línia fins al final necessitaríem l'ús d'un bucle while, per exemple.

<? Php // Exemple aprenderaprogramar.com

// Anirem llegint línia a línia del fitxer.txt fins arribar a la fi (feof ($ fp))

// Fitxer.txt han d'estar a la mateixa carpeta que el fitxer php

// Fitxer.txt és un arxiu de text normal creat amb notepad, per exemple.

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

while (!feof($fp)) {

$linea=fgets($fp);

echo $linia."<br/>";

}

fclose($fp);

?>

Això ens mostrarà el contingut del fitxer de text línia a línia. Comprovaràs que hem inclòs una nova funció anomenada feof (que ve significant alguna cosa així com file end of file o "marca de final de fitxer"). La sintaxi general per aquesta funció és: feof (identificadorDelArxiu)

La funció feof ens retorna true quan hem arribat al final d'arxiu i false si no ho hem assolit encara. La condició while (! Feof ($fp)) podríem haver-la escrit també de la següent manera: while (feof ($fp)==false). Aquesta sintaxi és equivalent, pots fer servir la que prefereixis, però has d'acostumar a entendre les dues formes d'escriptura.

Finalment, fixa't com un cop hem de acabat d'operar amb el fitxer escrivim la instrucció fclose (identificadorDelArxiu) per tancar la connexió, cosa que hem de fer sempre.

 

FUNCIÓ fputs

La funció fputs () escriu una línia en un arxiu. La seva sintaxi general és:

<? Php // Exemple

fputs(descriptorDelArxiu, cadena);

?>

 

 

Exemple

<? Php // Exemple

// Escrivim una primera línia a fitxer.txt

// Fitxer.txt han d'estar a la mateixa carpeta que el fitxer php

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

fputs($fp,"Prova d'escriptura" );

fclose($fp);

?>

Fixa't que en realitzar l'obertura del fitxer en mode w, si el fitxer no existeix, serà creat. Fixa't també com una vegada hem de acabat d'operar amb el fitxer escrivim la instrucció fclose (identificadorDelFitxer) per tancar la connexió, cosa que hem de fer sempre.

Si ara obrim el fitxer amb algun editor de textos com Notepad, Bloc de notes o qualsevol altre, veurem el següent:

 

EXERCICI

Crea les següents funcions en PHP:

a) Una funció (tipus procediment, no hi ha valor retornat) anomenada escriureTresNumeros que rebi tres nombres enters com a paràmetres i procedeixi a escriure aquests nombres en tres línies en un fitxer anomenat dadesExercici.txt. Si l'arxiu no existeix, ha de crear-lo.

b) Una funció anomenada obtenirSuma(tipus funció, retornarà un valor numèric) que rebi una ruta d'arxiu com a paràmetre, llegiu els números existents en cada línia de l'arxiu, i retorni la suma de tots aquests números.

c) Una funció anomenada obtenirArrNum(tipus funció, retornarà un array de valors numèrics) que rebi una ruta d'arxiu com a paràmetre, llegiu els números existents en cada línia de l'arxiu, i retorni una matriu l'índex 0 contindrà el nombre existent a la primera línia, l'índex 1 contindrà el nombre existent a la segona línia i així successivament.

d) Crea codi php on a través de la funció escriureTresNumeros escriguis en el fitxer els números 2, 8, 14. Després, mitjançant la funció obtenirSuma mostra per pantalla el resultat de sumar els números existents a l'arxiu. Finalment, mitjançant la funció obtenirArrNum vos l'array, recorre-ho i mostra cada un dels elements de l'array.