Várias funções ficaram obsoletas (depreciadas) a partir do PHP 5.3+. Neste artigo vou dar uma dica de como substituir as funções ereg, eregi, split e spliti por funções em Perl e funcionar perfeitamente em suas aplicações PHP.
Perl é uma das linguagens preferidas por administradores de sistema e é especialmente versátil no processamento de cadeias (strings), manipulação de texto e no pattern matching implementado através de expressões regulares, além de ser bastante adequada para o desenvolvimento de projetos utilizando uma metodologia ágil. (Wikipedia, 2011).
Vamos começar pelas funções ereg e eregi. As duas verificam se a variável casa com a expressão regular definida, com diferença que a primeira é case sensitive, ou seja, faz distinção de letras maiúsculas e minúsculas, e a segunda não. Substituiremos ambas pela função preg_match.
Utilizando a função obsoleta ereg e eregi para validar um email:
<?php
// A função obsoleta ereg
if (ereg("^[a-z0-9_-]+[a-z0-9_.-]*@[a-z0-9_-]+[a-z0-9_.-]*\.[a-z]{2,5}$", $email))
echo 'O email é válido!';
else
echo 'Email inválido!';
// A função obsoleta eregi (case sensitive)
if (eregi("^[a-z0-9_-]+[a-z0-9_.-]*@[a-z0-9_-]+[a-z0-9_.-]*\.[a-z]{2,5}$", $email))
echo 'O email é válido!';
else
echo 'Email inválido!';
?>
Para o PHP 5.3+ utilizamos a função preg_match. Repare que é preciso colocar uma barra no início e no fim da expressão regular. No caso do eregi deve-se colocar a letra “i” logo após a última barra na expressão regular:
<?php
// Substituindo a função ereg (case sensitive)
if (preg_match("/^[a-z0-9_-]+[a-z0-9_.-]*@[a-z0-9_-]+[a-z0-9_.-]*\.[a-z]{2,5}$/", $email))
echo 'O email é válido!';
else
echo 'Email inválido!';
// Substituindo a função eregi
if (preg_match("/^[a-z0-9_-]+[a-z0-9_.-]*@[a-z0-9_-]+[a-z0-9_.-]*\.[a-z]{2,5}$/i", $email))
echo 'O email é válido!';
else
echo 'Email inválido!';
?>
Agora as funções split e spliti. As duas separam strings em array utilizando expressões regulares, com diferença que a primeira é case sensitive, ou seja, faz distinção de letras maiúsculas e minúsculas, e a segunda não. Substituiremos ambas pela função preg_split.
Utilizando a função obsoleta split e spliti para separar uma string usando a letra “a” como separador:
<?php
// A função obsoleta split
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = split("a", $string, 5);
print_r($chunks);
// A função obsoleta spliti
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = spliti("a", $string, 5);
print_r($chunks);
?>
Para o PHP 5.3+ utilizamos a função preg_split:
<?php
// Substituindo a função split (case sensitive)
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = preg_split("/a/", $string, 5);
print_r($chunks);
// Substituindo a função spliti
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = preg_split("/a/i", $string, 5);
print_r($chunks);
?>
Ponto, problema resolvido. Espero que o artigo seja útil.
Referências
PHP .net: http://php.net/
Perl Brasil: http://www.perl.org.br/Main/WebHome
Wikipedia: http://pt.wikipedia.org/wiki/Perl