/ PHP

Deixar apenas os números de uma String PHP

A função preg_replace() do PHP é muito útil em várias situações. Nesse post vamos ver como é simples usa-la par remover todos os caracteres de uma string PHP, deixando apenas números.

Isso é bastante usado quando temos algo como um CPF 123.158.124-22 e precisamos salvar no banco de dados apenas os números. Neste caso precisamos fazer essa convesão antes e por isso é interessante saber como funciona a função preg_replace().

Mas o que a função preg_replace() faz?

Ela faz uma pesquisa por uma expressão regular e a substitui. Por isso ela é bem flexivel e serve para muito mais coisas que apenas remover caracteres indesejados de uma string.

E o que são expressões regulares?

São uma forma de identificar cadeias de caracteres de interesse, tais como certa palavra, grupos de caracteres ou padrões específicos. Você pode ler uma definição mais ampla aqui: Wikipédia

Vamos ao código

Vou usar o exemplo do CPF que citei anteriormente. Neste caso vou usar a função preg_replace() e uma expressão regular [^0-9]. Essa expressão servirá para buscar qualquer caractere que seja diferente de números.

<?php
var cpf = '123.158.124-22';
$cpf = preg_replace("/[^0-9]/", "", $cpf);
echo($cpf);

// Resultado: 12315812422

Transformando em Função

Para facilitar o reuso vamos transformar isso em uma função.

<?php
function onlyNumbers($str) {
    return preg_replace("/[^0-9]/", "", $str);
}

Agora você pode usa-la onde desejar.

<?php
echo onlyNumbers('minha string com numeros 123.158.124-22');
// Resultado: 12315812422

Referências

Manual PHP - preg_replace

Wikipédia - Expressões Regulares

lucianobragaweb

Luciano Braga

Hi there, I'm Luciano Braga and I'm a Full Stack Developer and student of Computer Science. I use this website to post about code, web technologies and others things as algorithms for sample. You can see my projects on GitHub.

Read More