Palavra:   

Revista PHP / PHP

Vitor Amaral

Desenvolvedor PHP + MYSQL Experiencias com as bibliotecas: GD2, Smarty, PHPMailer. E-commerce, newsletters, intranet

Expressões Regulares (compatíveis com o padrão POSIX) parte 1

Meu primeiro artigo aqui, eu vou falar um pouco sobre, expressões regulares no php.
São usadas para manipulações complexas de strings no PHP

As funções suportadas são:
•    ereg()

•    ereg_replace()

•    eregi()

•    eregi_replace()

•    split()

•    spliti()

Não precisa de nenhuma biblioteca externa. PHP usa expressões regulares compatíveis com o padrão POSIX.

Vou dividir esse artigo, em pequenas partes, nessa primeira vamos falar sobre 1 funções:
(ereg()). Mas antes, alguns conceitos básicos.


Padrões individuais

.   
Casa qualquer caractere, o ponto é tratado como um literal. Por exemplo.
a.c casa “abc” e assim por diante.

[ ]   
Lista de caracteres. Casa uma ocorrência de qualquer caractere contido na lista.
Por exemplo. [abc] casa “a”,”b” ou “c”.
Podemos definir intervalos de caracteres: [a-z] casa qualquer caractere de “a”a ”z”,  e [0123456789] é igual a [0-9].

[^ ]
Lista negada de caracteres. Casa uma ocorrência de qualquer caractere não contido na lista. Por exemplo. [^abc] casa qualquer caractere que não seja “a”, “b” ou “c”, [^a-z] casa qualquer caractere que não esteja em caixa baixa.

ereg() – Casando expressões regulares.

Descrição:
ereg(string expressão, string variável, [array registros])

Verifica se a ‘variável’ casa com a expressão regular definida em “expressão” em modo (casa sensitive).
Só for passado o terceiro parâmetro “registros”, a execução guardara os elementos resultantes na matriz “registros”

Exemplos 1:
  1. <?php
  2. //data no padrão ISO
  3. $data = "2009-12-22";
  4. ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $data, $registros);
  5. echo $registros[3]."/".$registros[2]."/".$registros[1];
  6. ?>
Resultado na tela:
22/12/2009

Exemplos 2:
Oposto do exemplo 1.
  1. <?php
  2. $data = "22/12/2009";
  3. ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $data, $registros);
  4. echo $registros[1]."-".$registros[2]."-".$registros[3];
  5. ?>
Resultado na tela:
2009-12-22

Você pode usar essa função para validar imagens que vem de um formulário.
Exemplo 3:
Temos um formulário simples, apontando para “ação.php” onde, vai pegar os dados do formulário com o método “post”.

Gravar.php
  1. <form name="form" id="form" method="post" action="acao.php?acao=gravar" enctype="multipart/form-data">
  2. Arquivo:
  3. <input type="file" name="img" id="img"><br>
  4. <input id="limpar" type="reset" id="Entrar" value="limpar">
  5. <input id="gravar" type="submit" id="gravar" value="gravar">
  6. </form>
ação.php
  1. <?php
  2. if($_GET['acao'] == "gravar"):
  3. //PEGANDO A IMAGEM
  4.  
  5. $string = $_FILES['img']['name'];
  6.  
  7. ereg ("(.*)\.([^.]+)$", $string, $partes);
  8.  
  9. echo "nome da imagem: ".$partes[1];
  10. echo "<br>";
  11. if($partes[2] == "jpg")echo "imagem do tipo jpg";
  12. if($partes[2] == "jpeg")echo "imagem do tipo jpeg";
  13. if($partes[2] == "png")echo "imagem do tipo png";
  14. if($partes[2] == "gif")echo "imagem do tipo gif";
  15. if($partes[2] == "bmp")echo "imagem do tipo bmp";
  16.  
  17. endif;
  18. ?>
Ele pega a string , e separada as partes, baseando no caractere “.” ponto.
Ex:
  1. $string = imagem.jpg”
  2. ereg ("(.*)\.([^.]+)$", $string, $partes);
  3. $partes[1] = imagem
  4. $partes[2] = jpg
Na próxima parte do artigo, vou explicar mais detalhadamente esse ultimo exemplo e colocar mais alguns. E vou falar das outras funções também.

Você pode ler mais: http://br.php.net/ereg

Valeu

Opções de Interação

Comentários

PCRE
Por: Sérgio, 11/07/2009   23:00:10
Recomendo usar PCRE e na parte de casamento do tipo de imagen pode usar:

$img = $_FILES['nomeDaImagem'];
if (preg_match('/^image\/(jpg|jpeg|pjpeg|png|gif|bmp)/', $img['type']))
{
echo 'Forma válido';
}