Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/08/2004, 20:38
jmaribau
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
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.

Última edición por jmaribau; 21/08/2004 a las 20:47