..


Links Patrocinados

PCRE regulares funções de expressão (e diferenças com as funções POSIX)

Artigo escrito por Max Bossi
Página 1 de 4

Tivemos já deu a entender nos últimos dias através das páginas do nosso blog, mas hoje eu gostaria de investigar um tema que eu acredito que vai ser de interesse para milhares de desenvolvedores - como eu - uso diário PHP para desenvolver suas aplicações web.

A partir da versão 5.3 do PHP, na verdade, os desenvolvedores que desejam explorar o potencial das expressões regulares não pode mais fazer uso de funções POSIX (por assim dizer ereg () e família), mas deve, necessariamente, usar as funções PCRE (Perl regular Compatível expressões), por exemplo, preg_match () .

As funções PCRE construído em PHP permitem que você use a sintaxe típica expressão regular do Perl (mais precisamente, a implementação atual oferece suporte à sintaxe do Perl 5.005), que é ligeiramente diferente do das funções POSIX. Para mais informações sobre a sintaxe da PCRE é possível consultar o Manual disponível no site oficial PCRE.org.

Comparações: o preg_match ()

Se você quiser fazer uma comparação entre uma string e um padrão (um modelo escrito na forma de expressões regulares) vai precisar usar preg_match () que, de fato, substituir ereg () e eregi ().

Usando preg_match () é de uso comum, muito simples: você passa a função do padrão ea seqüência de verificar. Se o padrão for satisfeita, a função retorna 1 se 0 (ou FALSE se um erro).

Na verdade migrar de ereg () não é coisa complicada. Você vai precisar de algum pouco de criatividade na formulação do padrão.

Aqui está um exemplo:

 



 <? Php







 if (preg_match ('/ mrwebmaster / i', 'MrWebmaster Viva!')) {



  



 echo "encontrado";







 Else {}



  



 echo "não encontrado";







 }







 ?>

 
Este é o mesmo:
 



 <? Php







 if (eregi ('mrwebmaster', 'MrWebmaster Viva!')) {



  



 echo "encontrado";







 Else {}



  



 echo "não encontrado";







 }







 ?>

 

No nosso exemplo simples de usar preg_match () usamos a string como um padrão

 



 / Mrwebmaster / s

 
Vamos ver a sintaxe:
  • / ... / - Delimitar o início eo fim da expressão;
  • mrwebmaster - é uma cadeia simples que você quiser verificar o texto passado como o segundo argumento;
  • i - "i" depois do delimitador de fechamento indica que a pesquisa deve ser NÃO case sensitive (assim como foi feito usando a função eregi ()). Tecnicamente esse "i" é um modificador, na página uma lista completa dos modificadores permitido na sintaxe da PCRE.

A diferença com ereg ()

Como você pode ver a diferença com ereg () não são muitos, vamos resumi-los brevemente:

  • uso de delimitadores / ... / (na verdade, você pode usar outros personagens como delimitador, mas a barra é a escolha usual);
  • case-insensitive versão (eregi ()) é substituído pelo uso de "i" depois do delimitador de fechamento;
  • a presença do personagem / no padrão vai exigir (se você está acostumado a barra como delimitador) escape (\ /) para não ser confundido com os delimitadores;
  • Existem algumas pequenas diferenças na gestão de caracteres ASCII (as funções POSIX, ao contrário do PCRE aceitar os caracteres numéricos ASCII:. Eg corresponde ao número 10 e 13 de retorno de carro nova linha; vice-versa com as funções PCRE 10 representa exclusivamente o número dez).
  • o ereg function () aceita apenas três parâmetros (texto padrão, a ser verificado e, opcionalmente, uma matriz para armazenar os resultados) e preg_match () admite cinco (os dois primeiros, já vimos, são necessários, os outros três são opcionais );

Com base no acima (e as diferenças que foram mencionadas), podemos considerar novamente (parcialmente) válida explicações teóricas sobre a sintaxe de expressões regulares podem ser encontradas em nesta página do artigo "Expressões Regulares em PHP" dedicado às funções antigas POSIX .

Na mesma categoria ...
E-Learning
Linux (Curso) Linux (Curso)
Guia completo para open-source do sistema. A partir de 49 €.
MySQL (Curso) MySQL (Curso)
Gestão de banco de dados open-source. A partir de 39 €.
PHP (Curso) PHP (Curso)
Curso completo para a criação de sites dinâmicos. A partir de 49 €.
Links Patrocinados