How to Extract Numbers From a String in PHP

Minahil Noor Feb 02, 2024
  1. Use preg_match_all() Function to Extract Numbers From a String in PHP
  2. Use filter_var() Function to Extract Numbers From a String in PHP
  3. Use preg_replace() Function to Extract Numbers From a String in PHP
How to Extract Numbers From a String in PHP

In this article, we will introduce methods to extract numbers from a string in PHP.

  • Using preg_match_all() function
  • Using filter_variable() function
  • Using preg_replace() function

Use preg_match_all() Function to Extract Numbers From a String in PHP

We can use the built-in function preg_match_all() to extract numbers from a string. This function globally searches a specified pattern from a string. The correct syntax to use this function is as follows:

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

The built-in function preg_match_all() has five parameters. The details of its parameters are as follows

Parameters Description
$pattern mandatory It is the pattern that we want to check in the given string.
$inputString mandatory It is the string for which we want to search the given pattern.
$matches optional If this parameter is given, then the function stores the result of the matching process in it.
$flags optional This parameter has two options: PREG_OFFSET_CAPTURE and PREG_UNMATCHED_AS_NULL. You can read its description here.
$offset optional It tells the function of where to start the matching process. Usually, the search starts from the beginning.

This function returns a Boolean variable. It returns true if the given pattern exists.

The program below shows how we can use the preg_match_all() function to extract numbers from a given string.

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

We have used !\d+! pattern to extract numbers from the string.

Output:

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

)

Use filter_var() Function to Extract Numbers From a String in PHP

We can also use the filter_var() function to extract numbers from a string. The correct syntax to use this function is as follows:

filter_var($variableName, $filterName, $options)

The function filter_var() accepts three parameters. The detail of its parameters is as follows

Parameters Description
$variableName mandatory It is the variable to filter.
$filterName mandatory It is the name of filter which will be applied to the variable. By default, it is FILTER_DEFAULT
$options mandatory This parameter tells about the options to use.

We have used FILTER_SANITIZE_NUMBER_INT filter. The program that extracts numbers from the string is as follows:

<?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"); 
?> 

Output:

The extracted numbers are: 46 

Use preg_replace() Function to Extract Numbers From a String in PHP

In PHP, we can also use the preg_replace() function to extract numbers from a string. The correct syntax to use this function is as follows:

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

The function preg_replace() accepts five parameters. The detail of its parameters is as follows

Parameters Description
$regexPattern mandatory It is the pattern we will search in the original string or array.
$replacementVar mandatory It is the string or array which we use as a replacement for the searched value.
$original mandatory It is the string or an array from which we want to find value and replace it.
$limit optional This parameter limits the number of replacements.
$count optional This parameter tells about the number of total replacements made on our original string or array.

We will use the pattern /[^0-9]/ for finding numbers in the string. The program that extracts numbers from the string is as follows:

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

Output:

The extracted numbers are: 46 

Related Article - PHP String