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