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.
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 empezamos, 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 numérico.
// @uthor: Robert Galeano Fernandez - @rgfpy
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;
}
?>
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 empezamos, 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 numérico.
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!!
ResponderBorrary lo que se me ocurre usando la misma funcion de arriba es la sgte ojala te sirva:
Borrar$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'; }