Cómo extraer números de una cadena en PHP

  1. Usa la función preg_match_all() para extraer números de una cadena en PHP
  2. Usa la función filter_var() para extraer números de una cadena en PHP
  3. Usa la función preg_replace() para extraer números de una cadena en PHP

En este artículo, introduciremos métodos para extraer números de una string en PHP.

  • Usando la función preg_match_all()
  • Usando la función filter_variable()
  • Usando la función preg_replace()

Usa la función preg_match_all() para extraer números de una cadena en PHP

Podemos usar la función incorporada preg_match_all() para extraer números de una string. Esta función busca globalmente un patrón especificado de una string. La sintaxis correcta para usar esta función es la siguiente:

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

La función incorporada preg_match_all() tiene cinco parámetros. Los detalles de sus parámetros son los siguientes

Parámetros Descripción
$pattern obligatorio Es el patrón que queremos comprobar en la string dada.
$inputString obligatorio Es la string por la que queremos buscar el patrón dado.
$matches opcional Si se da este parámetro, entonces la función almacena el resultado del proceso de emparejamiento en él.
$flags opcional Este parámetro tiene dos opciones: PREG_OFFSET_CAPTURE y PREG_UNMATCHED_AS_NULL. Puedes leer su descripción aquí.
$offset opcional Le dice la función de dónde empezar el proceso de emparejamiento. Normalmente, la búsqueda comienza desde el principio.

Esta función devuelve una variable booleana. Devuelve true si el patrón dado existe.

El siguiente programa muestra cómo podemos usar la función preg_match_all() para extraer números de una cadena dada.

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

Hemos usado el patrón !\d+! para extraer números de la cadena.

Resultado:

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

)

Usa la función filter_var() para extraer números de una cadena en PHP

También podemos usar la función filter_var() para extraer números de una cadena. La sintaxis correcta para usar esta función es la siguiente:

filter_var($variableName, $filterName, $options)

La función filter_var() acepta tres parámetros. El detalle de sus parámetros es el siguiente

Parámetros Descripción
$variableName obligatorio Es la variable a filtrar.
$filterName obligatorio Es el nombre del filtro que se aplicará a la variable. Por defecto, es FILTER_DEFAULT
$options obligatorio Este parámetro indica las opciones a utilizar.

Hemos usado el filtro FILTER_SANITIZE_NUMBER_INT. El programa que extrae los números de la string es el siguiente:

<?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 

Usa la función preg_replace() para extraer números de una cadena en PHP

En PHP, también podemos usar la función preg_replace() para extraer números de una string. La sintaxis correcta para usar esta función es la siguiente:

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

La función preg_replace() acepta cinco parámetros. El detalle de sus parámetros es el siguiente

Parámetros Descripción
$regexPattern obligatorio Es el patrón que buscaremos en la string o array original.
$replacementVar obligatorio Es la string o array que usamos como reemplazo del valor buscado.
$original obligatorio Es la string o un array de la que queremos encontrar valor y reemplazarla.
$limit opcional Este parámetro limita el número de reemplazos.
$count opcional Este parámetro indica el número de reemplazos totales hechos en nuestra string o array original.

Usaremos el patrón /[^0-9]/ para encontrar números en la string. El programa que extrae los números de la string es el siguiente:

<?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 

Artículo relacionado - PHP String

  • Eliminar caracteres especiales en PHP
  • Escape de comillas en PHP