Como corrigir o Erro - Deprecated: Function ereg() is deprecated

A A A
110%Redefinir
Ocorreram diversas mudanças na estrutura do PHP 5.3.x e por isso, muitos scripts e códigos antigos estão exibindo mensagens com erros. Neste artigo explicaremos como resolver o erro Deprecated: Function ereg() is deprecated.

O que é ereg?

Primeiro, antes de falar do problema temos que entender o que era a função ereg() do PHP. Esta função permitia que você procura-se uma determinada expressão regular, com case sensitive, retornando a quantidade de itens encontrados ou false caso nenhum fosse encontrado.

Ela também contava com algumas variantes como o eregi() que trabalhava da mesma forma, porém com case insenstive e a ereg_replace() que permitia substituir todas as posições encontradas, assim como o eregi_replace() que faz o mesmo, porém com case insensitive.

Diferença entre ereg() e eregi()

Antigamente para fazermos distinção entre case sensitive e case insensitive deveríamos utilizar funções diferentes, por isso existia o ereg() e eregi(), para a mesma função, apenas fazendo ou não a distinção de cases.

Porque o ereg() foi depreciado?

O ereg() apesar de ser bem mais simples que seu sucessor, ele executava a mesma ação, porém com menos opções, não fazendo sentido manter duas funções parecidas.

Este tipo de atitude tem sido tomada pela equipe do PHP para eliminar as funções redundantes existentes hoje, que, apesar de facilitar seu aprendizado, torna bastante complexa a manutenção do código-fonte de terceiros.

Como solucionar o problema Function ereg() is deprecated

A função ereg() pode ser facilmente substituída pela função preg_match(), que apresenta resultado semelhante ao ereg(), tendo somente algumas diferenças em sua declaração. Veja abaixo.
//Código Original:
//if(ereg("abc", "nabc,nobc,treabc")) { }
//Deverá ser Substituído por:
//if(preg_match("/abc/", "nabc,nobc,treabc")) { }

Observe que as únicas mudanças foram o nome da função de ereg() para preg_match() e ao invés de "abc" para "/abc/". Estas barras servem para indicar ao interpretador de expressão regular da função de que a expressão acabou.

Se você estiver tentando substituir o eregi() faça a seguinte modificação:
//Código Original:
//if(eregi("abc", "nabc,nobc,treabc")) { }
//Deverá ser Substituído por:
//if(preg_match("/abc/i", "nabc,nobc,treabc")) { }

Neste caso necessário apenas digitar o /i ao final da expressão. Isso tornará a validação da expressão regular em case não sensitivo.

Como solucionar o problema Function ereg_replace() is deprecated

Assim como o ereg(), o ereg_replace() também foi depreciado, sendo este substituído pelo preg_replace(), aonde a substituição pode ser feita facilmente da seguinte forma:
//Código Original:
//ereg_replace("abc", "nabc,nobc,treabc", "Este é um texto do tipo abc");
//Deverá ser Substituído por:
//preg_replace("/abc/", "nabc,nobc,treabc", "Este é um texto do tipo abc");

Como solucionar o problema Function eregi_replace() is deprecated

No caso da função eregi_replace() aonde não é feita a distinção entre letras maiúsculas e minúsculas, você deverá adicionar o /i após os marcadores da expressão regular:
//Código Original:
//eregi_replace("abc", "nabc,nobc,treabc", "Este é um texto do tipo abc");
//Deverá ser Substituído por:
//preg_replace("/abc/i", "nabc,nobc,treabc", "Este é um texto do tipo abc");

Este artigo foi útil?


   

Deixe um Comentário