Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabyo

Módulo 09

Recommended Posts

Curso de PHP online

 

Modulo 9

 

Introdução

 

o Manipulação de arquivos texto

o Funções do PHP para manipulação de arquivos

o Criando um mural de recados em arquivos texto

o Expressões Regulares (E.R.)

 

Manipulação de arquivos texto

 

Muitas vezes precisamos guardar dados simples, e por isso não teria a necessidade de um SGBD

Basta um arquivo de texto, sendo esse modo mais simples e rápido que um SGBD.

Só lembrando que se tratando de um arquivo de texto ele torna seu sistema mais frágil e sem segurança

Como por exemplo, qualquer pessoa pode abrir o arquivo de texto e examinar tudo que tem dentro dele, ou até mesmo apagar ele.

Sem contar também que o arquivo de texto tem que ser usado para escrita num modo exclusivo se não fizer isso pode perder dados já que duas pessoas ou mais estiverem usando um sistema em base de texto e na hora de gravar elas não podem gravar ao mesmo tempo, por isso você terá que criar uma proteção para o arquivo na hora de gravar e liberar quando não estiver gravando, um exemplo desse tipo de falha é o banco acess antigo.

Essa função de proteção do arquivo para escrita e outras vocês vão ver logo mais nesse curso.

E sobre o que eu falei de segurança e fragilidade dos arquivos texto não é querendo te desencorajar a usar arquivos textos, pelo contrário.

É só um aviso importante que você precisava saber antes de começar a manipular arquivos textos, muitos sistemas usam base de texto

para guardar dado ou até configurações do sistema, enquetes simples, contadores de acesso ou visitas ou clicks, equipamentos como micro terminais,

catracas eletrônicas, sistemas de telefonia, etc..., como você pode ver muitos sistemas ou equipamentos usam base em arquivos de texto.

Eu posso citar um exemplo as catracas eletrônicas, não conheço todas as marcas mas a marca Wilbor usa base de textos e ela grava

o número do cartão do funcionário, data e hora de entrada ou saída, para que o sistema do RH possa colher esses dados e controlar

as faltas do funcionário e fazer o pagamento com horas extras etc..., outro sistema muito usado e conhecido em grandes empresas

é um sistema de PABX que controla as ligações da empresa inteira como quem ligou e pra onde, data, horário, fazendo um relatório

completo das ligações de entrada e saída da empresa, e esse sistema também usam base de textos não digo todos, mas a maioria

como por exemplo, da marca Intelbras.

Por isso é bom você saber manipular arquivos de texto caso algum dia precise.

Eu por exemplo fiz um sistema completo para colher os dados de uma catraca eletrônica da empresa em que eu trabalho , já que o próprio sistema

que vem com ela é muito simples e limitado, da pra falar de muito mais utilidades de usar arquivos de texto, mas vou parar por aqui.

Obs.: Não estou falando em nenhum momento que uma base em arquivo de texto é melhor que um SGBD só estou falando as utilidades e vantagens de usar base de texto

Sem comparar com SGBD.

 

Abertura de um arquivo de texto

 

fopen

 

fopen Abri um arquivo ou uma URL www.php.net/fopen

 

Descrição

resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]])

 

mode Descrição

'r' Abre somente leitura; coloca o ponteiro do arquico no começo do arquivo.

'r+' Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.

'w' Abre para escrita somente; coloca o ponteiro do arquivo no começo do arquivo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo não existe, tenta criá-lo.

'w+' Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no começo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo não existe, tenta criá-lo.

'a' Abre para escrita somente; coloca o ponteiro do arquivo no final. Se o arquivo não existe, tenta criá-lo.

'a+' Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no final. Se o arquivo não existe, tenta criá-lo.

'x' Cria e abre o arquivo para escrita somente; coloca o ponteiro no início do arquivo. Se o arquivo já existe, a chamada a fopen() irá falhar, retornando FALSE e gerando um erro nível E_WARNING. Se o arquivo não existe, tenta criá-lo. Isto é o equivalente a informar as flags O_EXCL|O_CREAT numa chamada a open(2). Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais.

'x+' Cria e abre um arquivo para escrita e leitura; coloca o ponteiro do arquivo no início. Se o arquivo já existe, a chamada a fopen() irá falhar, retornando FALSE e gerando um erro nível E_WARNING. Se o arquivo não existe, tenta criá-lo. Isto é o equivalente a informar as flags O_EXCL|O_CREAT numa chamada a open(2). Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais.

 

O Windows oferece uma flag de tradução do modo texto ('t') que traduz, transparentemente, \n para \r\n quando trabalhando no arquivo. Em contraste, você também pode utilizar 'b' para forçar o modo binário, que não irá traduzir o arquivo. Para usar essas flags, informe ou 'b' ou 't' como o último caracter no parâmetro mode.

 

O modo do sistema de tradução default depende da versao da SAPI sob o qual você está usando o PHP, então é encorajado a sempre utilizar a flag apropriada por razões de portabilidade. Você deve usar o modo 't' se estiver trabalhando em arquivos texto simples e utilizar \n para delimitar as linhas em seu script, de forma que você pode esperar que eles sejam lidos em outras aplicações como o Notepad. Você deve usar 'b' em todos os outros casos.

 

Se você não especificar a flag 'b' quando trabalhando com arquivos binários, você pode experimentar problemas estranhos com seus dados, incluindo arquivos de imagens danificados e problemas estranhos com os caracteres \r\n.

 

Para portabilidade, é estremamente recomendado que você sempre utilize a flag 'b' quando abrindo arquivos com fopen().

 

Novamente, por portabilidade, é estremamente recomendável que você re-escreva seu código nas situações em que o modo 't' deva ser utilizado para corrigir os fim de linha, onde o modo 'b' não deva ser utilizado.

 

A partir do PHP 4.3.2, o modo padrão é configurado para binário em todas as plataformas que distinguem entre modo texto e binário. Se você está tendo problemas em seus scripts depois de um upgrade, tente acrescentar a flag't' como um paliativo até que você tenha tornado seus scripts portáveis como mencionado acima.

 

Você pode usar o terceiro pparâmetro opcional como "1", se você quiser procurar pelo arquivo no include_path também.

 

Se a abertura falhar, a função retorna FALSE e um erro nível E_WARNING é gerado. Você pode utilizar @ para suprimir esse alerta.

 

Exemplo 1. exemplo do fopen()

PHP
  1. <?php
     
  2. $handle = fopen ("/home/rasmus/file.txt""r");
     
  3. $handle = fopen ("/home/rasmus/file.gif""wb");
     
  4. $handle = fopen ("http://www.example.com/""r");
     
  5. $handle = fopen ("ftp://user:password@example.com/somefile.txt""w");
     
  6. ?> 

 

Se você está tendo problemas com a leitura e gravação para arquivos e você está usando a versão de modulo de servidor do PHP, lembre-se de que os arquivos e diretórios que você está usando precisam ser acessíveis ao processo do servidor HTTP.

 

Na plataforma Windows, tenha cuidado para usar uma segunda barra invertida (escape) nos caminhos de arquivos, ou usar a barra normal.

 

<?php
$handle = fopen ("c:\\data\\info.txt", "r");
?>  

 

fclose

 

fclose

 

fclose -- Fecha um ponteiro de arquivo aberto

 

Descrição

bool fclose ( int handle)

 

O arquivo apontado por handle é fechado.

 

Retorna TRUE em caso de sucesso ou FALSE em falhas.

 

O ponteiro para o arquivo tem que ser válido e tem que apontar para um arquivo aberto por fopen() ou fsockopen().

 

Exemplo 1. Exemplo fclose()

 

PHP

  1.  
  2. <?php
     

  3.  
  4.  $handle = fopen('qualquerarquivo.txt', 'r');
     

  5.  
  6.  fclose($handle);
     

  7.  
  8. ?> 
     

 

readfile

readfile -- Lê e exibe o conteúdo de um arquivo

Descrição

int readfile ( string nomedoarquivo [, bool use_include_path [, resource context]])

 

 

Lê um arquivo e escreve o seu conteúdo para o buffer de saída (output buffer).

 

Retorna o número de bytes lido do arquivo. Se um error ocorrer, retorna FALSE e ao menos que a função seja chamada como @readfile(), uma mensagem de erro será impressa.

 

Dica: Você pode usar uma URL com esta função se fopen wrappers estiver habilitado. Veja fopen() para mais detalhes em como especificar o nome do arquivo e Apêndice L para uma lista de protocolos URL suportados.

 

Você pode usar o segundo parâmetro opcional e o configurar para TRUE, se você quiser procurar o arquivo no include_path também.

 

PHP
  1. <?php
     

  2.  
  3. $bytes = readfile("teste.txt");// le arquivo na mesma linha
     
  4. echo $bytes;
     
  5. ?>

file

 

file -- Le um arquivo inteiro para um array

Descrição

array file ( string filename [, int use_include_path [, int use_include_path]])

 

PHP
  1. <?php
     
  2. $array = file ("teste.txt");
     
  3. foreach ($array as $linha)
     
  4. echo $linha."<br>";
     
  5. ?>

 

Idêntico a readfile(), exceto que file() retorna o arquivo em um array. Cada elemento do array corresponde a uma linha no arquivo, inclusive com o caracter de nova linha. Em caso de falha, file() retorna FALSE.

 

Você pode usar o parâmetro opcional use_include_path como "1", se você deseja procurar o arquivo no include_path também.

 

PHP

  1.  
  2. <?php
     
  3. // Le um arquivo em um array. Nesse exemplo você pode obter via HTTP para obter
     
  4. // o código fonte HTML de uma URL.
     
  5. $lines = file ('http://www.exemplo.com/');
     

  6.  
  7. // Roda através do array, mostrando o fonte HTML com numeração de linhas.
     
  8. foreach ($lines as $line_num => $line) {
     
  9. echo "Linha #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";
     
  10. }
     

  11.  
  12. // Outro exemplo, onde obtemos a página web inteira como uma string. Veja também file_get_contents().
     
  13. $html = implode ('', file ('http://www.exemplo.com/'));
     
  14. ?> 

 

 

Dica: Você pode usar uma URL com esta função se fopen wrappers estiver habilitado. Veja fopen() para mais detalhes em como especificar o nome do arquivo e Apêndice L para uma lista de protocolos URL suportados.

 

Nota: Cada linha do array resultante terá os caracteres de fim de linha, então você precisa utilizar trim() se não quiser esses caracteres presentes.

 

Nota: Se você está tendo problemas com o PHP no reconhecimento do final de linha quando criando ou lendo arquivos num computador Macintosh, você pode habilitar a opção auto_detect_line_endings.

 

Nota: A partir do PHP 4.3.0, você pode utilizar file_get_contents() para retornar o conteúdo de um arquivo como uma string.

 

No PHP 4.3.0 file() se tornou segura para arquivos binários.

 

file_get_contents

file_get_contents -- Le todo o conteúdo de um arquivo para uma string

Descrição

string file_get_contents ( string filename [, int use_include_path [, resource context]])

 

Idêntico a file(), exceto que file_get_contents() retorna o arquivo em uma string.

 

file_get_contents() é o método preferível para ser ler o conteúdo de um arquivo em uma string. Ela usa tecnicas de mapeamento de memório suportadas em seu sistema operacional para melhorar a performance.

 

Nota: Esta função é compatível com dados binários

 

Dica: Você pode usar uma URL com esta função se fopen wrappers estiver habilitado. Veja fopen() para mais detalhes em como especificar o nome do arquivo e Apêndice L para uma lista de protocolos URL suportados.

 

Nota: O suporte ao contexto foi acrescentado no PHP 5.0.0.

 

PHP
  1. <?
     
  2. $conteudo = file_get_contents ("teste.txt");
     
  3. echo $conteudo;
     
  4. ?>

 

fread

fread -- Leitura binary-safe de arquivo

Descrição

string fread ( resource handle, int length)

 

fread() lê até length bytes do ponteiro de arquivo informado em handle. A leitura é interrompida quando length bytes foram lidos ou o fim do arquivo (eof) foi alcançado, ou (para streams de rede) quando um pacote se torna disponível, o que ocorrer primeiro.

 

PHP
  1. <?php
     
  2. $ponteiro = fopen ("teste.txt""r");
     
  3. $conteudo = fread ($ponteiro, 30);
     
  4. echo $conteudo;
     
  5. fclose ($ponteiro);
     
  6. ?>

 

PHP
  1. <?php
     
  2. // ler o conteúdo do arquivo para uma string
     
  3. $filename = "/usr/local/qualquer.txt";
     
  4. $handle = fopen ($filename, "r");
     
  5. $conteudo = fread ($handle, filesize ($filename));
     
  6. fclose ($handle);
     
  7. ?> 

 

Atenção

Em sistemas que diferenciam entre arquivos binários e texto (por exemplo Windows) o arquivo tem que ser aberto com 'b' incluído como parametro na função fopen().

 

PHP
  1. <?php
     
  2. $filename = "c:\\files\\figura.gif";
     
  3. $handle = fopen ($filename, "rb");
     
  4. $conteudo = fread ($handle, filesize ($filename));
     
  5. fclose ($handle);
     
  6. ?> 

 

Atenção

Quando lendo de streams de rede ou canais (pipes), como aqueles retornados pela leitura de arquivos remotos ou de popen() e proc_open(), a leitura irá parar depois que um pacote se torna disponível. Isto significa que você deve juntar os dados em blocos como demonstrado no exemplo seguinte.

 

 

PHP
  1. <?php
     
  2. $handle = fopen ("http://www.example.com/""rb");
     
  3. $conteudo = "";
     
  4. do {
     
  5. $data = fread($handle, 8192);
     
  6. if (strlen($data) == 0) {
     
  7. break;
     
  8. }
     
  9. $conteudo .= $data;
     
  10. } while(true);
     
  11. fclose ($handle);
     
  12. ?> 

 

 

Nota: O exemplo acima tem uma performance melhor que o jeito comum usando while(!feof()), porque ele economiza o overhead de uma chamada de função por iteração.

 

Nota: Se você quer apenas pegar o conteúdo de um arquivo para uma string, utilize file_get_contents() que tem uma performance ainda melhor que o código acima.

 

 

 

fgets

fgets -- Le uma linha de um ponteiro de arquivo

Descrição

string fgets ( resource handle [, int length])

 

 

Retorna uma string com até length - 1 bytes lidos do arquivo apontado por handle. A leitura acaba quando length - 1 bytes foram lidos, encontra-se um fim de linha (newline) (que é incluido no valor retornado) ou no fim de arquivo (EOF) (o que acontecer primeiro). Se nenhum length for informado, o default é 1Kb, ou 1024 bytes.

 

Se um erro ocorrer, retorna FALSE.

 

Equívocos comuns:

 

Pessoas acostumadas a semântica do fgets em 'C' devem notar a diferenca em como o fim do arquivo (EOF) é retornado.

 

O ponteiro para o arquivo deve ser válido e deve apontar para um arquivo aberto com sucesso por fopen(), popen() ou fsockopen().

 

Um simples exemplo segue: Exemplo 1. Lendo um arquivo linha a linha

 

PHP
  1. <?php
     
  2. $handle = fopen ("/tmp/arquivodeentrada.txt""r");
     
  3. while (!feof ($handle)) {
     
  4. $buffer = fgets($handle, 4096);
     
  5. echo $buffer;
     
  6. }
     
  7. fclose ($handle);
     
  8. ?>
     

 

PHP
  1. <?
     

  2.  
  3. $ponteiro = fopen ("teste.txt""r");
     

  4.  
  5. while (!feof ($ponteiro)) {
     

  6.  
  7.  $linha = fgets($ponteiro, 4096);
     
  8.  
     
  9.  echo $linha."<br>"
     
  10.  
     
  11. }
     

  12.  
  13. fclose ($ponteiro);
     
  14. ?>

Nota: O parâmetro length se tornou opcional a partir do PHP 4.2.0, e se omitido, tem default para 1024 bytes para o comprimento da linha. A partir do PHP 4.3, omitindo length fará continuar a leitura a partir do stream até encontrar o fim da linha. Se a maioria das linhas no arquivo forem todar maiores que 8 Kb, haverá mais eficiência de recursos se seus scripts informarem o comprimento máximo das linhas.

 

Nota: Esta função é binary safe a partir do PHP 4.3. Versões anteriores não são seguras para dados binários.

 

Nota: Se você está tendo problemas com o PHP no reconhecimento do final de linha quando criando ou lendo arquivos num computador Macintosh, você pode habilitar a opção auto_detect_line_endings.

 

 

 

fwrite

fwrite -- Gravação em arquivos binary-safe

Descrição

int fwrite ( resource handle, string string [, int comprimento])

 

 

fwrite() grava os conteúdos de string para o stream de arquivo apontado por handle. Se o argumento comprimento é dado, a gravação irá parar depois de que comprimento bytes foram escritos ou o fim da string é alcançada, o que ocorrer primeiro.

 

fwrite() retorna o número de bytes gravados, ou FALSE em caso de erro.

 

Note que se o argumento comprimento é dado, então a opção de configuração magic_quotes_runtime será ignorada e nenhuma barra será retirada do string.

 

Nota: Em sistemas que diferenciam entre arquivos binários e texto (por exemplo Windows) o arquivo tem que ser aberto com 'b' incluído no parametro mode do fopen().

 

Exemplo fwrite

 

PHP
  1. <?php
     
  2. $filename = 'teste.txt';
     
  3. $somecontent = "Acrescentando isto no arquivo\n";
     

  4.  
  5. // Tendo certeza que o arquivo existe e que há permissão de escrita primeiro.
     
  6. if (is_writable($filename)) {
     

  7.  
  8. // Em nosso exemplo, nós estamos abrindo $filename em modo de append (acréscimo).
     
  9. // O ponteiro do arquivo estará no final dele desde
     
  10. // que será aqui que $somecontent será escrito com fwrite().
     
  11. if (!$handle = fopen($filename, 'a')) {
     
  12.  print "Erro abrindo arquivo ($filename)";
     
  13.  exit;
     
  14. }
     

  15.  
  16. // Escrevendo $somecontent para o arquivo aberto.
     
  17. if (!fwrite($handle, $somecontent)) {
     
  18. print "Erro escrevendo no arquivo ($filename)";
     
  19. exit;
     
  20. }
     

  21.  
  22. print "Sucesso: escrito ($somecontent) no arquivo ($filename)";
     

  23.  
  24. fclose($);
     

  25.  
  26. else {
     
  27. print "The file $filename is not writable";
     
  28. }
     
  29. ?>

 

fputs

fputs -- Sinônimo de fwrite()

 

flock

flock -- Monitor de travamento de arquivos portátil

Descrição

bool flock ( int handle, int operation [, int &wouldblock] )

 

O PHP suporta uma maneira portável de lock arquivos inteiros em uma advisory way (que significa que todos os programas acessando tem que usar o mesmo tipo de travamento ou não irá funcionar).

 

flock() opera em fp, que tem que ser um ponteiro de arquivo aberto com sucesso. operacao é um dos seguintes valores:

 

Para obter um lock compartilhado (leitura), utilize operation como LOCK_SH (ou use 1 se a versão do PHP for anterior a 4.0.1).

 

Para obter um lock exclusivo (gravação), utilize operacao como LOCK_EX (ou use 2 se a versão do PHP for anterior a 4.0.1).

 

Para retirar um lock (compartilhado ou exclusivo), uyilize operacao como LOCK_UN (ou use 3 se a versão do PHP for anterior a 4.0.1).

 

Se você não quer usar flock() para bloquear enquanto travando, adicione LOCK_NB (4 se a versão do PHP for anterior a 4.0.1) a operacao.

 

 

flock() permite a você fazer um simples modelo leitura/gravação (reader/writer) que pode ser usado em virtualmente todas as plataformas (incluindo a maior parte dos Unixes e até mesmo Windows). O terceiro argumento opcional é usado como TRUE se a lock irá bloquear (EWOULDBLOCK errno condition).

 

Retorna TRUE em caso de sucesso ou FALSE em falhas.

 

Exemplo 1. flock() example

 

PHP
  1. <?php
     

  2.  
  3. $fp = fopen("/tmp/lock.txt""w+");
     

  4.  
  5. if (flock($fp, LOCK_EX)) { // faca um lock exclusivo
     
  6. fwrite($fp, "escrevemos algo aqui\n");
     
  7. flock($fp, LOCK_UN); // libera o lock
     
  8. else {
     
  9. echo "Não pude travar o arquivo !";
     
  10. }
     

  11.  
  12. fclose($fp);
     

  13.  
  14. ?> 

 

 

 

Nota: Uma vez que flock() requer um ponteiro de arquivo, você precisa utilizar um lock de arquivo especial para proteger i acessi a um arquivo ao qual você pretende truncar quando abrindo no modo de escrita (com um argumento "w" ou "w+" em fopen()).

 

 

Atenção

flock() não funcionará em NFS ou em qualquer outro sistema de arquivos em rede. Verifique a documentação do seu sistema operacional para mais detalhes.

 

Na maior parte dos sistemas operacionais flock() é implementada no nível do processo. Quando utilizando um servidor com uma API de multiprocessamento (como ISAPI), você não pode confiar em flock() para proteger os arquivos contra outros scripts PHP rodando em threads paralelas da mesma instância do servidor!

 

flock() não é suportado em sistemas de arquivos antiquados como a FAT e seus derivados, e sempre retornará FALSE sob esses ambientes (especialmente para usuários do Windows 98).

 

Criando um mural de recados em arquivos texto

 

vou mostrar como criar um mural de recados bem simples

depois vocês podem aperfeiçoar ele como por exemplo

deixar só pessoas cadastradas postar uma mensagem, nao deixar dados em branco serem gravados, limitar o tamanho maximo da mensagem, colocar a opção de editar a mensagem ,mas o usuario pode só editar a sua propria mensagem e o admin pode editar todas, é facil fazer tudo isso ,mas como o foco do curso não é fazer sistemas pra ninguem ,mas sim ensinar o caminho das pedras e mostrar os melhores caminhos ,então fica por sua conta essa incrementação do sistema, mas qualquer duvida pode perguntar no forum

 

PHP
  1. <html>
     
  2. <body>
     
  3. <form method="post" action="gravar.php">
     
  4. <table width="100px" border="0" align="center">
     
  5.  <tr>
     
  6. <td>Nome: </td>
     
  7. <td><input name="nome" type="text" size="20" maxlength="20"></td>
     
  8.  </tr>
     
  9.  <tr>
     
  10. <td>Mensagem:</td>
     
  11. <td>
     
  12.  <textarea name="msg" cols="20" rows="3">
     
  13. </textarea>
     
  14. </td>
     
  15.  </tr>
     
  16.  <tr>
     
  17. <td><input type="submit" value="Enviar"></td>
     
  18.  </tr>
     
  19. </table>
     
  20. </form>
     
  21. </body>
     
  22. </html>
     
  23. <?
     
  24. echo "<hr>";
     

  25.  
  26. if(isset($_POST["nome"]))
     
  27. {
     

  28.  
  29. $fp = fopen("arquivo.txt""a+");
     

  30.  
  31. $nome = trim($_POST["nome"]);
     
  32. $msg = trim($_POST["msg"]);
     

  33.  
  34. $nome = str_replace("\r\n"" ", $nome);
     
  35. $msg = str_replace("\r\n"" ", $msg);
     
  36. $data = date("d/m/Y H:i");
     

  37.  
  38. fwrite($fp, "$nome|$msg|$data\n");
     
  39. fclose($fp);
     

  40.  
  41. $fp = file("arquivo.txt");
     

  42.  
  43. for( $i = 0; $i < count($fp); $i++)
     
  44. {
     
  45. $arr = explode("|", $fp[$i]);
     

  46.  
  47. echo "Data: $arr[2]<br />";
     
  48. echo "Nome: $arr[0]<br />";
     
  49. echo "Mensagem: $arr[1]<br /><hr>";
     

  50.  
  51. }
     

  52.  
  53. }
     
  54. ?>

 

 

 

Funções do PHP para manipulação de arquivos

 

Índice

 

basename -- Retorna a parte nome do arquivo do caminho/path

chgrp -- Modifica o grupo do arquivo

chmod -- Modifica as permissões do arquivo

chown -- Modifica o dono do arquivo

clearstatcache -- Limpa as informações em cache de arquivos

copy -- Copia arquivo

dirname -- Retorna o componente diretório de um caminho/path

disk_free_space -- Retorna o espaço disponivel no diretório

disk_total_space -- Retorna o tamanho total do diretório

diskfreespace -- Sinônimo de disk_free_space()

fclose -- Fecha um ponteiro de arquivo aberto

feof -- Testa pelo fim-de-arquivo (eof) em um ponteiro de arquivo

fflush -- Força a liberação do buffer para um arquivo

fgetc -- Le um caracter do ponteiro de arquivo

fgetcsv -- Le uma linha do ponteiro de arquivos e a interpreta por campos CSV

fgets -- Le uma linha de um ponteiro de arquivo

fgetss -- Ler uma linha de um ponteiro de arquivo e retira as tags HTML

file_exists -- Checa se um arquivo ou diretório existe

file_get_contents -- Le todo o conteúdo de um arquivo para uma string

file_put_contents -- Write a string to a file

file -- Le um arquivo inteiro para um array

fileatime -- Obtém o último horário de acesso do arquivo

filectime -- Ler o tempo de modificação do inode do arquivo

filegroup -- Lê o grupo do arquivo

fileinode -- Lê o inode do arquivo

filemtime -- Le o tempo de modificação do arquivo

fileowner -- Lê o dono (owner) do arquivo

fileperms -- Lê as permissões do arquivo

filesize -- Lê o tamanho do arquivo

filetype -- Lê o tipo de arquivo (file type)

flock -- Monitor de travamento de arquivos portátil

fnmatch -- Verifica se um nome de arquivo bate com padrão (wildcards)

fopen -- Abri um arquivo ou uma URL

fpassthru -- Imprime todo os dados restantes de um ponteiro de arquivo

fputcsv -- Format line as CSV and write to file pointer

fputs -- Sinônimo de fwrite()

fread -- Leitura binary-safe de arquivo

fscanf -- Interpreta a leitura de um arquivo de acordo com um formato

fseek -- Procura (seeks) em um ponteiro de arquivo

fstat -- Lê a informação sobre um arquivo usando um ponteiro de arquivo aberto

ftell -- Retorna a posição de leitura/gravação do ponteiro do arquivo

ftruncate -- Corta (trunca) um arquivo para um tamanho especificado

fwrite -- Gravação em arquivos binary-safe

glob -- Localiza diretórios/arquivos que combinem com o padrão

is_dir -- Diz se o caminho é um diretório

is_executable -- Diz se um arquivo é executável

is_file -- Diz se o arquivo é um arquivo comum (não é diretório)

is_link -- Diz se o arquivo é um link simbólico (symbolic link)

is_readable -- Diz se o arquivo é legivel (readable)

is_uploaded_file -- Diz se o arquivo foi uploaded via HTTP POST

is_writable -- Diz se pode-se escrever para o arquivo (writable)

is_writeable -- Esta é uma função sinônima (alias) de is_writable()

link -- Criando um hard link

linkinfo -- Ler informações sobre um link

lstat -- Obtem informações sobre um arquivo ou link simbólico

mkdir -- Criar um diretório

move_uploaded_file -- Move um arquivo carregado para uma nova localização

parse_ini_file -- Interpreta um arquivo de configuração

pathinfo -- Retorna informação sobre o path de um arquivo

pclose -- Fecha um processo de um ponteiro de arquivo

popen -- Abre um processo como ponteiro de arquivo

readfile -- Lê e exibe o conteúdo de um arquivo

readlink -- Retornar o alvo de um link simbólico

realpath -- Retorna o path absoluto canonicalizado

rename -- Renomear um arquivo

rewind -- Reinicializa a posição do ponteiro de arquivos para o início

rmdir -- Remove um diretório

set_file_buffer -- Sinônimo de stream_set_write_buffer()

stat -- Obtem informações sobre um arquivo

symlink -- Cria um link simbólico

tempnam -- Cria um nome de arquivo único

tmpfile -- Cria um arquivo temporário

touch -- Muda o tempo de modificação do arquivo

umask -- Modificar a umask atual

unlink -- Apaga um arquivo

 

Expressões Regulares (E.R.)

 

Você ja deve ter visto sobre regex, ER ou Expressões regulares

bom pra quem não entende nada de ER e muito mesmo sabia o que era ER

esse tutorial é pra você, vou tentar explicar o máximo sobre ER tirando aquela ideia que uma ER parece codigo pra indigena ou outra coisa que não da pra entender nada, meu foco não é deixar você 100% conhecedor de ER ,mas sim mostrar que não é tão complicado fazer ou ler uma er basta prestar atenção

e eu vou passar o que eu sei dai você terá uma base pra se aprofundar em conhecer melhor sobre ER, muita gente não sabe usar uma ER por isso acaba fazendo coisas complexas que com uma simples ER faria, depois que você se acostumar a trabalhar com ER você vai ver que é impossivel ficar sem elas

bom mas chega de papo e vamos la para o que interessa.

 

O que são Expressões Regulares?

 

Resumindo são simbolos ou caracteres com funções especiais para pesquisar,

casar uma frase, palavra ou caracter, substituir ou modificar, por exemplo você pode procurar uma frase por uma palavra a ou você só quer aceitar só palavras minusculas, você quer uma palavra ou caracter que esteja no começo ou no fim de uma frase, você pode validar: emails,cnpj, cpf, numeros, datas, etc... tudo isso que eu falei e muito mais você pode fazer com ER, muito mais facil que tentar fazer uma função pra isso dependendo da função ela seria enorme ao contrario de uma simples ER de uma linha

 

funções do php para manipular as ER

 

ereg()

ereg_replace()

eregi()

eregi_replace()

split()

spliti()

preg_match()

preg_match_all()

preg_replace()

preg_split()

sql_regcase()

 

Vou falar mais da próprias ER doque as funções acima caso queria estuda-las procure no manual do php

 

\a Isto combina com o caractere ASCII da campainha (BEL, 0x07).

 

\f Isto combina com o caractere ASCII de nova página (FF, 0x0C).

 

\n Isto combina com o caractere ASCII de nova linha (LF, 0x0A, nova linha do Unix).

 

\r Isto combina com o caractere ASCII de retorno de carro (CR, 0x0D).

 

\t Isto combina com o caractere ASCII de tabulação horizontal (HT, 0x09).

 

\v Isto combina com o caractere ASCII de tabulação vertical (VT, 0x0B).

 

\xhhhh

Isto combina com o caractere Unicode correspondente ao número hexadecimal hhhh (entre 0x0000 e 0xFFFF). \0ooo (isto é, \zero ooo) combina com o caractere ASCII/Latin-1 correspondente ao número octal ooo (entre 0 e 0377).

 

. (ponto) Isto combina com qualquer caractere (incluindo nova linha).

 

\d Isto combina com um dígito. É igual a [0-9]

 

\D Isto combina com um caractere que não seja dígito. Igual a [^0-9] ou [^\d]

 

\s Isto combina com um caractere em branco. Praticamente igual a [\t\n\r]

 

\S Combina com o que não seja espaço em branco. Praticamente igual a [^\t\r\n], e igual a [^\s]

 

\w Combina com quaisquer “caractere da palavra”, neste caso quaisquer letras ou dígitos. Note que o caractere de sublinhado (ou underscore - _) não combina, como é o caso com expressões regulares do Perl. Igual a [a-zA-Z0-9]

 

\W Combina com qualquer caractere diferente de palavra - qualquer coisa menos letras ou números. Igual a [^a-zA-Z0-9] ou [^\w]

 

 

[] lista

 

- (hífen)

Denota um intervalo lógico. Deve sempre ser escapado dentro de uma classe.

 

[0-9] mesma coisa que 0123456789

 

[a-z] mesma coisa que abcdefghij...z

 

^ (circunflexo)

Denota uma classe negativa, se for o primeiro caractere. Deve ser escapado para combinar literalmente, se for o primeiro caractere da classe.

 

\ (barra invertida) O caractere de escape.

 

^ (circunflexo) Combina com o início da string.

 

$ Combina com o fim da string.

 

() (parênteses esquerdo e direito) Denota sub-padrões.

 

{} (abre e fecha chaves) Denota quantificadores numéricos.

 

| OR lógico. Alternativas separadas.

 

+ (sinal de mais) Quantificador, 1 ou mais.

 

* (asterisco) Quantificador, 0 ou mais.

 

? (ponto de interrogação) Um caractere opcional. Pode ser interpretado como um quantificador, 0 ou 1.

 

 

[[:alnum:]] Caracteres alfanuméricos.

[[:alpha:]] Caracteres alfabéticos.

[[:digit:]] Número Decimal (0-9).

[[:lower:]] Caracteres minúsculos.

[[:upper:]] Caracteres maiúsculos.

[[:xdigit:]] Número Hexadecimal .

[[:cntrl:]] Caracteres de Controle.

[[:print:]] Caracteres imprimíveis.

[[:space:]] Caracteres com espaços em branco.

 

 

[a-z] caracteres do alfabeto (minúsculo).

[A-Z] caracteres do alfabeto (maiúsculo).

[a-zA-Z] caracteres do alfabeto (maiúsculo e minúsculo).

[aeiou] apenas vogais.

[^a-z] tudo menos os caracteres do alfabeto (minúsculo).

[^aeiou] - apenas consoantes O caractere ^ representa fora do intervalo das vogais. Não está contido entre aeiou..

 

[^] quando tem um ^ dentro de uma lista[] ele quer dizer pra negar esses simbolos como você viu acima [^a-z] ele nao vai aceitar qualquer palavra minuscula de a a z [a-z] se tiver sem o ^ele vai aceitar só palavras minusculas de a a z pagar casar um caracter que é simbolo da ER você tem que escapa-la exemplo [\^] acima será o ^mesmo e não a função para negar

 

um ^ fora de uma lista[] quer dizer começo e $ quer dizer fim

 

por exemplo se você procura por uma palavra que começe com a se pode fazer assim (^a) exemplo:

 

PHP
  1. <?
     
  2. $test = "Fabyo";
     
  3. echo preg_match("/(^a)/", $test);
     
  4. ?>

 

ele ira retornar falso porque a 1 letra não é a e sim F

 

PHP
  1. <?
     
  2. $test = "André";
     
  3. echo preg_match("/(^a)/", $test);
     
  4. ?>

 

esse exemplo acima continuará retornando falso porque você ta buscando um a minusculo se quiser aceitar maiusculos e minusculos você pode fazer assim:

 

PHP
  1. <?
     
  2. $test = "André";
     
  3. echo preg_match("/(^[aA])/", $test);
     
  4. ?>

 

ou usando um modificador i que aceita minusculas ou maiusculas

 

PHP
  1. <?
     
  2. $test = "André";
     
  3. echo preg_match("/(^a)/i", $test);
     
  4. ?>

 

PHP
  1. <?
     
  2. $test = "asp";
     
  3. echo preg_match(sql_regcase("#(PHP|ASP)#"), $test);
     
  4. ?>

 

sql_regcase -- Cria expressões regulares insensíveis a maiúsculas e minúsculas.

 

(PHP|ASP) o | é um or ( ou ) PHP ou ASP e o sql_regcase vai aceitar tanto minusculas como maiusculas

 

e sobre ("#(PHP|ASP)#") é só pra escapar a ER no preg_match pode ser usado qualquer caracter de escape

mas tome cuidado para não usar um muito diferente ou que pode ser usado na ER

 

posso escapar assim: ("/(PHP|ASP)/") ou ("~(PHP|ASP)~") , bom pelo menos agora você vai olhar pra ER e não vai ficar tão confuso querendo descobrir pra que serve a /, # ou ~

 

outro exemplo só para entender melhor:

 

PHP
  1. <?
     
  2. $test = "*? teste";
     
  3. echo preg_match("#(\*\?\s)#", $test);
     
  4. ?>

 

"#(\*\?\s)#" agora vamos tirar o que não interessa \*\?\s as aspas é pra delimitar a string o # é pra delimitar a ER () era só pra fazer uma sub classe entao restou só "\*\?\s ficou bem mais facil de entender não é mesmo? o \ está escapando o * e o ? mas \s faz parte da funções do ER e ele quer dizer que combina com caractere em branco.

 

$test = "*? teste"; então a função ira retornar verdadeiro pois ela tem "*? teste";

um * e ? depois um espaço e é exatamente o que a gente procurava \*\?\s

 

outra função

 

$code = preg_replace(sql_regcase( "#(\?>|%>)|(<%|<\?)(php)?#") , "<span style='color: red; font-weight: bold;'>\\0</span>", $code );

 

essa função ira colorir as tags <??>, <%%> ou <?php ?> <?PHP ?>

 

< = < e > = >

 

depois de passar pela função ira colorir as tags ficando por exemplo :<??>

 

no próximo módulo falarei mais sobre ER , explicarei mais sobre as funções da ER

e darei mais exemplos pra você não ficar tão perdido como eu ficava quando olhava uma ER

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao é bem por ai nao, mas la só tem exemplos do proprio manual porque fazer outro exemplo ?

por exemplo lista de funções modo de execução , pra que eu vou redigitar tudo de novo se tem no manual o intuito do curso é completar o manual e passar algo a mais se você ver eu comentei sobre txt mais de 20 linhas e isso nao ta no manual

 

e as outras explicações que eu coloco nao conta? e sempre to colocando script que eu faço pra ajudar no entendimento

e outra coisa esse curso ta seguindo uma linha de raciocinio tem coisas que sao muito claras e faceis de entender entao basta mostrar os exemplos do proprio manual para a pessoa entender em vez de eu colocar um link e ela ter que ficar trocando de paginas toda hora, agora quando o assunto é mais complexo veja se tem copia do manual do php, olha o assunto sobre cookies e outros você vai ver que tem bastante conteudo porque o simples manual nao bastaria

bom nao posso agradar a todos mas to fazendo o que eu posso

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem contar que aqui no curso que o fabyo conduziu aqui tão bem, todos tem suporte, para tirar suasduvidas que com certeza já são de grande valia...coisas que não tem no manual, não em prazo tão curto...só por isso acho que o curso já vale...abraços a todosMarcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

O bom disso tudo será que quando o curso terminar já estaremso familiarizados com o Manual, podendo caminhar com as próprias pernas....Sempre achei o Manual um pouco complexo para entender.... agora ele ficará mais simples.Valeu Fabyo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente galera... esse intensivão ta ajudando muita gente (inclusive eu). Admiro muito o Fabyo pela presteza, paciencia (...).O curso ta 1000 (to um pouco atrasado... mas to correndo atraz). so tenho q agradecer... e t DEUS te abençoe em todos sentidos.valeu bacana...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este curso é joiado e tem me ajudado bastante!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Já havia lido várias vezes o manual(entre outros tutoriais) mas não havia compreendido nada(ou quase nada) sobre ER...

Agora ficou tudo mais claro!

Valeu Fabyo, você tem uma didática muito boa!

=D http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.