Foros del Web » Programando para Internet » PHP »

dar formato a dólares americanos

Estas en el tema de dar formato a dólares americanos en el foro de PHP en Foros del Web. tengo este problema: la funcion me convierte de soles a dolares... y me devuelve lo siguiente: s/2,430.00=$744.512138 aca le doy el formato: Código PHP: number_format ...
  #1 (permalink)  
Antiguo 18/10/2013, 21:56
 
Fecha de Ingreso: julio-2013
Mensajes: 60
Antigüedad: 11 años, 4 meses
Puntos: 0
dar formato a dólares americanos

tengo este problema:
la funcion me convierte de soles a dolares... y me devuelve lo siguiente:
s/2,430.00=$744.512138
aca le doy el formato:
Código PHP:
number_format(744.5121382'.'''
resultado==$744.51
pero cunado el resultado que la funcion me devuelve es:
s/: 3,645.00=$1 116.76821
le doy formato:
Código PHP:
number_format(1 116.768212'.'''
resultado==1.00
como puedo hacer un funcion que me convierta al formato de dolar correctamente:

Código PHP:
 function  currency_paypal($from_Currency,$to_Currency,$amount) {
$amount urlencode($amount);
$from_Currency urlencode($from_Currency);
$to_Currency urlencode($to_Currency);
$url "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
$ch curl_init();
$timeout 0;
 
curl_setopt ($chCURLOPT_URL$url);
 
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
 
curl_setopt($ch,  CURLOPT_USERAGENT "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
 
curl_setopt ($chCURLOPT_CONNECTTIMEOUT$timeout);
$rawdata curl_exec($ch);
 
curl_close($ch);
$data explode('"'$rawdata);
$data explode(' '$data['3']);
$var $data['0'];
return 
$var//number_format($var, 2, '.', '');

  #2 (permalink)  
Antiguo 18/10/2013, 22:23
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: dar formato a dólares americanos

Tienes que reemplazar los espacios con str_replace o preg_replace y usar utf8_decode para un carácter extraño que coloca después del primer número.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 18/10/2013, 22:46
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: dar formato a dólares americanos

Supongo que llevas muy poquito programando en PHP.

La funcion number_format() recoje un INT, los INT no van separados por espacios por lo que debes quitarlos antes de pasarselos a la funcion, de otro modo solo coje el 1 y hasta el espacio, ignorando los numeros siguientes.

Con un:
Código PHP:
Ver original
  1. $val =  str_replace(' ','',$val);

debería valer.
  #4 (permalink)  
Antiguo 18/10/2013, 22:56
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: dar formato a dólares americanos

El único problema que tiene no son los espacios, ahora que recuerdo ya le había dado el código completo hace una semana pero no lo tuvo en cuenta así que eso es todo
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 19/10/2013, 10:01
 
Fecha de Ingreso: julio-2013
Mensajes: 60
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: dar formato a dólares americanos

Cita:
Iniciado por andresdzphp Ver Mensaje
El único problema que tiene no son los espacios, ahora que recuerdo ya le había dado el código completo hace una semana pero no lo tuvo en cuenta así que eso es todo
Hola andres con la funcion que me diste q es esta.
el resultado es:
1�116.76821
el espacion lo convierte en un caracter raro..
Código PHP:
function  currency_paypal($from_Currency,$to_Currency,$amount) {
    
$amount urlencode($amount);
    
$from_Currency urlencode($from_Currency);
    
$to_Currency urlencode($to_Currency);
    
$url "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
    
$ch curl_init();
    
$timeout 0;
    
curl_setopt ($chCURLOPT_URL$url);
    
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($ch,  CURLOPT_USERAGENT "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    
curl_setopt ($chCURLOPT_CONNECTTIMEOUT$timeout);
    
$rawdata curl_exec($ch);
    
curl_close($ch);
    
$data explode('"'utf8_decode($rawdata));
    
$data explode(' '$data['3']);
    
$var preg_replace('@\s+@'''$data['0']);
    return 
$var;

  #6 (permalink)  
Antiguo 19/10/2013, 10:13
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: dar formato a dólares americanos

Los espacios no se convierten en caracteres raros... Tiene ese carácter raro además de los espacios.

Como tienes la función el resultado de 8000 es:

2Â 892.264

debes quitar ese  y espacios para que te funcione number_format.

La prueba:

Código PHP:
Ver original
  1. function  currency_paypal($from_Currency,$to_Currency,$amount) {
  2.     $amount = urlencode($amount);
  3.     $from_Currency = urlencode($from_Currency);
  4.     $to_Currency = urlencode($to_Currency);
  5.     $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
  6.     $ch = curl_init();
  7.     $timeout = 0;
  8.     curl_setopt ($ch, CURLOPT_URL, $url);
  9.     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  10.     curl_setopt($ch,  CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
  11.     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  12.     $rawdata = curl_exec($ch);
  13.     curl_close($ch);
  14.     $data = explode('"', utf8_decode($rawdata));
  15.     $data = explode(' ', $data['3']);
  16.     $var = preg_replace('@\s+@', '', $data['0']);
  17.     return number_format($var, 2, '.', '');
  18. }
  19.  
  20. echo currency_paypal('PEN', 'USD', 8000); //imprime 2892.26

Edito: De todas formas es mejor que busques otra alternativa, porque iGoogle será retirado el 1 de noviembre de 2013.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 19/10/2013 a las 10:27
  #7 (permalink)  
Antiguo 19/10/2013, 11:23
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: dar formato a dólares americanos

Te dejo 2 servicios más y dan ambos el mismo resultado:

Webservicex

Código PHP:
Ver original
  1. function CurrencyConvertor($from, $to, $amount) {
  2.     $url = "http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=$from&ToCurrency=$to";
  3.     $sxe = new SimpleXMLElement($url, null, true);
  4.     $rate = (float) $sxe * $amount;
  5.     return number_format($rate, 2, '.', '');
  6. }
  7.  
  8. echo CurrencyConvertor('PEN', 'USD', 8000); //2894.40

Yahoo

Código PHP:
Ver original
  1. function CurrencyConvertorYahoo($from, $to, $amount) {
  2.     $url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fd%2Fquotes.csv%3Fe%3D.csv%26f%3Dc4l1%26s%3D$from$to%3DX%22%3B&format=json";
  3.     $data = file_get_contents($url);
  4.     $json = json_decode($data);
  5.     $rate = $json->query->results->row->col1;
  6.     $result = $rate * $amount;
  7.     return number_format($result, 2, '.', '');
  8. }
  9.  
  10. echo CurrencyConvertorYahoo('PEN', 'USD', 8000); //2894.40
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 19/10/2013, 11:42
 
Fecha de Ingreso: julio-2013
Mensajes: 60
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: dar formato a dólares americanos

Cita:
Iniciado por andresdzphp Ver Mensaje
Los espacios no se convierten en caracteres raros... Tiene ese carácter raro además de los espacios.

Como tienes la función el resultado de 8000 es:

2Â 892.264

debes quitar ese  y espacios para que te funcione number_format.

La prueba:

Código PHP:
Ver original
  1. function  currency_paypal($from_Currency,$to_Currency,$amount) {
  2.     $amount = urlencode($amount);
  3.     $from_Currency = urlencode($from_Currency);
  4.     $to_Currency = urlencode($to_Currency);
  5.     $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
  6.     $ch = curl_init();
  7.     $timeout = 0;
  8.     curl_setopt ($ch, CURLOPT_URL, $url);
  9.     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  10.     curl_setopt($ch,  CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
  11.     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  12.     $rawdata = curl_exec($ch);
  13.     curl_close($ch);
  14.     $data = explode('"', utf8_decode($rawdata));
  15.     $data = explode(' ', $data['3']);
  16.     $var = preg_replace('@\s+@', '', $data['0']);
  17.     return number_format($var, 2, '.', '');
  18. }
  19.  
  20. echo currency_paypal('PEN', 'USD', 8000); //imprime 2892.26

Edito: De todas formas es mejor que busques otra alternativa, porque iGoogle será retirado el 1 de noviembre de 2013.
entonces tiene que devolverme en este formato:
2892.264
Código PHP:
$pap =number_format(2892.2642'.''').'</br>'
resultado..:2892.26
puedo recorrer con un for y preguntar si es diferente a numero q no me concatene es factible..
  #9 (permalink)  
Antiguo 19/10/2013, 12:09
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: dar formato a dólares americanos

Puedes hacer muchas cosas para organizar ese string pero tienes que tener en cuenta lo que dije: iGoogle será retirado el 1 de noviembre de 2013. Arriba te dejé 2 ejemplos a ver cual te puede servir.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: formato
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:57.