Lição 15: Ler arquivos de texto

Na lição anterior estudamos como acessar o sistema e arquivos do servidor. Nesta lição aplicaremos o conhecimento adquirido para fazer a leitura de um arquivo de texto no servidor.

Arquivos de texto são uma maneira poderosa de armazenar vários tipos de dados. Eles não são tão flexíveis quanto um Banco de Dados, mas têm a vantagem de não requerer muita memória. Além disso por ser em formato de texto puro funcionam na grande maioria dos sistemas.

Abrir um arquivo de texto

Usamos a função documentaçãofopen para abrir um arquivo de texto. A sintaxe é mostrada a seguir:


	fopen(filename, mode)
	
	
filename
Nome do arquivo a abrir.
mode
Define o modo, que pode ser: "r" (reading - ler), "w" (writing - escrever) ou "a" (appending - adicionar). Nesta lição nós usaremos o modo de leitura "r". Nas próximas lições estudaremos como escrever e adicionar texto em um arquivo de texto.

Nos exemplos a seguir usaremso um arquivo de texto denominado unitednations.txt. trata-se de uma lista dos Programas e Fundações das Nações Unidas e seus respectivos domínios. Você fazer o download do arquivo ou criar seu próprio arquivo para testar os exemplos com ele.

Vamso começar abrindo o arquivo unitednations.txt:


	<?php

	// Abrir o arquivo de texto
	$f = fopen("unitednations.txt", "r");

	// Fechar o arquivo de texto
	fclose($f);

	?>

	
	

Exemplo 1: Ler uma linha de um arquivo de texto

Usamos a função documentaçãofgets para ler uma linha do arquivo. Este método lê até o primeiro "break" de linha no arquivo (não inclui a linha do "break").


	<html>

	<head>
	<title>Ler um arquivo de texto</title>
	</head>
	<body>

	<?php

	$f = fopen("unitednations.txt", "r");

	// Lê uma linha e escreve no cliente
	echo fgets($f); 

	fclose($f);

	?>

	</body>
	</html>
	
	

Exemplo 2: Ler todas as linhas de um arquivo de texto


	<html>

	<head>
	<title>Ler um arquivo de texto</title>
	</head>
	<body>

	<?php

	$f = fopen("unitednations.txt", "r");

	// Lê cada uma das linhas do arquivo
	while(!feof($f)) { 
	    echo fgets($f) . "<br />";
	}

	fclose($f);

	?>

	</body>
	</html>
	
	

No exemplo anterior percorremos as linhas com uso de um loop e usamos a função documentaçãofeof (for end-of-file) para verificar se chegamos ao fim do arquivo. Se não ("!" - ver lição 6), ta linha é escrita.

Em lugar de construir um loop poderíamos ter obtido o mesmo resultado com uso da função documentaçãofread. Se você trabalhar com arquivos extensos leve em consideração que a função documentaçãofread usa mais recursos que a função documentaçãofgets. Para arquivos pequenos, praticamente, não faz diferença usar uma ou outra.

Exemplo 3: Diretório de links

Conforme vimos no início desta lição, arquivos de texto podem ser excelentes para armazenagem de dados. Isto pode ser demonstrado no exemplo a seguir no qual criamos um diretório de links a partir dos conteúdos do arquivo de texto unitednations.txt.

O arquivo contém o nome do Programa ou Fundação seguindo-se uma vírgula e depois o domínio. É fácil de concluir que se quissésemos poderíamos armazenar mais informações nesta lista separada por vírgula.

Para recuperar a informação em cada linha usaremos um array. Ver lição 8 para mais informações sobre arrays.


	<html>
	<head>
	<title>Ler um arquivo de texto</title>

	</head>
	<body>

	<?php
	$f = fopen("unitednations.txt", "r");

	// Lê cada uma das linhas do arquivo
	while (!feof($f)) { 

	// Criar um array com o separador vírgula
	   $arrM = explode(",",fgets($f)); 

	// escreve links (dados vem do array)
	   echo "<li><a href='http://" . $arrM[1] . "'>" . $arrM[0]. "</a></li>"; 

	}

	fclose($f);
	?>

	</body>
	</html>
	
	

Legal não é? A princípio você pode expandir o arquivo de texto para conter mais linhas ou mesmo incluir outras informações como, por exemplo, um endereço.

Na próxima lição veremos como escrever em um arquivo de texto.



<< Lição 14: Sistema de arquivos

Lição 16: Escrever em arquivos de texto >>