Erro nas funções php obsoletas ereg e split

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima