A ver, parece que no me he explicado bien, reformulo la pregunta:
Teniendo un string que contiene numeros y palabras, se quiere transformar los numeros float( numeros con decimales) a que tengan 2 decimales. Tener en cuenta el sistema metrico español, separador de millares=punto, separador de decimales=coma.
El string en particular es este:
METEO & WEBCAM Datos actuales en Camping Aquarius (Playa de Sant Pere Pescador) Fecha: 22 ago 2004 Hora Datos: 04:14:44 (GMT+1) Temperatura Presión Humedad Velocidad del viento Dirección del viento ºC ºF hPa % m/s Km/h kt Beaufort SW Garbí 21 69,8 1019 61 0,48 1,7 1 1 Ultimas 24 h: grafica
I se quiere conseguir esto:
METEO & WEBCAM Datos actuales en Camping Aquarius (Playa de Sant Pere Pescador) Fecha: 22 ago 2004 Hora Datos: 04:14:44 (GMT+1) Temperatura Presión Humedad Velocidad del viento Dirección del viento ºC ºF hPa % m/s Km/h kt Beaufort SW Garbí 21 69,80 1019 61 0,48 1,70 1 1 Ultimas 24 h: grafica
Se tranforman: 69,8 a 69,80 y 1,7 a 1,70.
0.El separador es el espacio (' ');
1.Tener en cuenta que para saber si es un float (is_float) el separador de decimales es el punto y el separador de millares es la coma (medidas americanas), por tanto is_float(69,8)=false y is_float(69.9)=true.
El código que usaria yo seria este:
Código PHP:
<?php
$cad = 'METEO & WEBCAM Datos actuales en Camping Aquarius';
$cad .= '(Playa de Sant Pere Pescador) Fecha: 22 ago 2004 Hora Datos:';
$cad .= '04:14:44 (GMT+1) Temperatura Presión Humedad Velocidad del';
$cad .= 'viento Dirección del viento ºC ºF hPa % m/s Km/h kt Beaufort SW';
$cad .= 'Garbí 21 69,8 1019 61 0,48 1,7 1 1 Ultimas 24 h: grafica';
$matriz_cad = explode(' ',$cad);
foreach ($matriz_cad as $val) {
$val_usa = strtr($val,',.','.,'); // convetimos a numero americano
if (is_float($val_usa)) $cad_transf[] = number_format($val_usa,2);
else $cad_transf[] = $val;
}
echo implode(' ',$cad_transf);
?>
El problema de este código es que no interpreta bien la instrucción is_float.