Como extrair números a partir de uma string em PHP

Minahil Noor 30 janeiro 2023
  1. Utilize preg_match_all() Função para extrair números de uma string em PHP
  2. Utilize filter_var() Função para extrair números de uma String em PHP
  3. Utilize preg_replace() Função para extrair números de uma String em PHP
Como extrair números a partir de uma string em PHP

Neste artigo, introduziremos métodos para extrair números de uma string em PHP.

  • Utilizando a função preg_match_all()
  • Utilizando a função filter_variável()
  • Utilizando a função preg_replace()

Utilize preg_match_all() Função para extrair números de uma string em PHP

Podemos utilizar a função embutida preg_match_all() para extrair números de um string. Esta função busca globalmente um padrão especificado a partir de uma string. A sintaxe correta para utilizar esta função é a seguinte:

preg_match_all($pattern, $inputString, $matches, $flag, $offset);

A função embutida preg_match_all() tem cinco parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$pattern obrigatório É o padrão que queremos verificar no string dado.
$inputString obrigatório É o string para o qual queremos pesquisar o padrão dado.
$matches opcional Se este parâmetro for dado, então a função armazena o resultado do processo de correspondência nele.
$flags opcional Este parâmetro tem duas opções: PREG_OFFSET_CAPTURE e PREG_UNMATCHED_AS_NULL. Você pode ler sua descrição aqui.
$offset opcional Ele diz a função de onde iniciar o processo de correspondência. Normalmente, a busca começa desde o início.

Esta função retorna uma variável Boolean. Ela retorna verdadeira se o padrão dado existir.

O programa abaixo mostra como podemos utilizar a função preg_match_all() para extrair números de uma determinada string.

<?php 
$string = 'Sarah has 4 dolls and 6 bunnies.';
preg_match_all('!\d+!', $string, $matches);
print_r($matches); 
?> 

Temos utilizado !\d+! padrão para extrair números da string.

Resultado:

Array
(
    [0] => Array
        (
            [0] => 4
            [1] => 6
        )

)

Utilize filter_var() Função para extrair números de uma String em PHP

Também podemos utilizar a função filter_var() para extrair números de um string. A sintaxe correta para utilizar esta função é a seguinte:

filter_var($variableName, $filterName, $options)

A função filter_var() aceita três parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$variableName obrigatório É a variável a ser filtrada.
$filterName obrigatório É o nome do filtro que será aplicado à variável. Por padrão, ele é FILTER_DEFAULT.
$options obrigatório Este parâmetro informa sobre as opções a serem utilizadas.

Utilizamos o filtro FILTER_SANITIZE_NUMBER_INT. O programa que extrai números do string é o seguinte:

<?php 
$string = 'Sarah has 4 dolls and 6 bunnies.';
$int = (int) filter_var($string, FILTER_SANITIZE_NUMBER_INT);  
echo("The extracted numbers are: $int \n"); 
?> 

Resultado:

The extracted numbers are: 46 

Utilize preg_replace() Função para extrair números de uma String em PHP

Em PHP, também podemos utilizar a função preg_replace() para extrair números de uma string. A sintaxe correta para utilizar esta função é a seguinte:

preg_replace($regexPattern, $replacementVar, $original, $limit, $count)

A função preg_replace() aceita cinco parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$regexPattern obrigatório É o padrão que procuraremos no string ou array original.
$replacementVar obrigatório É o string ou array que usamos como um substituto para o valor procurado.
$original obrigatório É o string ou uma array a partir da qual queremos encontrar valor e substituí-lo.
$limit opcional Este parâmetro limita o número de substituições.
$count opcional Este parâmetro informa sobre o número de substituições totais feitas em nossa string ou array original.

Vamos utilizar o padrão /[^0-9]/ para encontrar números na string. O programa que extrai números da string é o seguinte:

<?php 
$string = 'Sarah has 4 dolls and 6 bunnies.';
$outputString = preg_replace('/[^0-9]/', '', $string);  
echo("The extracted numbers are: $outputString \n"); 
?> 

Resultado:

The extracted numbers are: 46 

Artigo relacionado - PHP String