sábado, 24 de septiembre de 2011

Extraer números de una cadena con PHP

Bueno he hecho una función simple para poder extraer solo letras numéricas pasando como parámetro palabras compuestas como por ejemplo si tenemos una variable $rgf = 'e1x2a3m4p5l6e'; y queremos solamente los números de esa cadena pues esta función nos va a servir.

[php]
// @uthor: Robert Galeano Fernandez - rgfpy - www.sourcepy.com

function ReturnNumbers($var){
$i = 0;
$return = "";
$part_var = "";
$len_var = strlen($var);

for($i=0; $i<$len_var; $i++){
$part_var = substr($var, $i, 1);

if(is_numeric( $part_var )){
$return .= $part_var;
}
}

return $return;
}
?>
[/php]

Como verán el script es muy sencillo lo primero que necesitamos es recorrer la cadena para preguntar si cada una de las letras es numérica y si es numérica vamos guardando pero para recorrer necesitamos saber cuantas letras contiene nuestra cadena.
Teniendo todo empesamos, con la función strlen() obtenemos la cantidad de caracteres que posee nuestra cadena, con la función substr() extraemos parte de nuestra cadena, con la función is_numeric() verificamos si la cadena que le pasamos es de tipo numerico.

2 comentarios:

  1. Muy bueno!..queria hacerte una consulta, como podria hacer para separar en variables numeros de una cadena, por ejemplo: $cadena="blabla 1234, blablabla 5678 blabla 0899", y que asi: $var1 = 1234 $var2 = 5678 $var3 = 0899, y asi si hay mas, te agradeceria eternamente si pudieras ponerme un ejemplo, desde ya gracias!!

    ResponderEliminar
    Respuestas
    1. y lo que se me ocurre usando la misma funcion de arriba es la sgte ojala te sirva:
      $cadena_arr = explode(' ', $cadena); $cant = count( $cadena_arr ); $cont_aux = 0; for($i = 0; $i<$cant; $i++){ $retorna = ReturnNumbers($cadena_arr[$i]); if ($retorna <> ''){ $cont_aux += 1; $numeros[$cont_aux] = $cadena_arr[$i]; } }
      for($i = 0; $i'; }

      Eliminar