para monedas google divisas cotizacion convertir conversor cambio php google-api

php - monedas - char devuelto por la API de divisas de Google



conversor de monedas en php (3)

Intenta modificar tu código para que puedas decodificar UTF8 de los datos que devuelve Google:

// Check URL has been formed if ($conversion == false) { echo ''Sorry, something went wrong''; } else { echo utf8_decode($conversion[0]), '' = '', utf8_decode($conversion[1]); }

Supongo que su codificación predeterminada es ISO-8859-1

EDITAR

(Según los comentarios) El problema puede ser que le han enviado un carácter nulo. Prueba esto:

$result = str_replace("/0", "", $result );

o

$result = str_replace("�", "", $result );

Fondo:

Creé un sitio web que muestra las tasas de cambio de varios países. Utilizo la API del conversor de divisas de Google para realizar los cálculos.

http://www.google.com/ig/calculator?h1=en&q=9999gbp=?usd

Observe la consulta que he pasado en, por ejemplo, 9999 Great British Pounds a United States Dollars .

La API regresa:

{lhs: "9999 British pounds",rhs: "15 769.4229 US dollars",error: "",icc: true}

Google ha separado el 15 769.4229 con espacios en blanco entre el 5 y el 7 .

Esto causa un problema cuando devuelvo los resultados de un cálculo en mi sitio ya que el espacio en blanco se reemplaza con el símbolo .

Vea la captura de pantalla a continuación:

¿Alguna idea de cómo se llama este símbolo para intentar quitarlo?

<?php // Check to ensure that form has been submitted if (isset($_POST[''amount''], $_POST[''from''], $_POST[''to''])) { $amount = trim($_POST[''amount'']); $from = $_POST[''from'']; $to = $_POST[''to'']; try { $conversion = currency_convert($googleCurrencyApi, $amount, $from, $to); } catch (Exception $e) { echo ''Caught exception: '', $e->getMessage(); } // Check URL has been formed if ($conversion == false) { echo ''Sorry, something went wrong''; } else { echo $conversion[0], '' = '', $conversion[1]; } } function currency_convert($googleCurrencyApi, $amount, $from, $to) { $result = file_get_contents($googleCurrencyApi . $amount . $from . ''=?'' . $to); $expl = explode(''"'', $result); if ($expl[1] == '''' || $expl[3] == '''') { throw new Exception(''An error has occured. Unable to get file contents''); } else { return array( $expl[1], $expl[3] ); } } ?>

Aquí está mi código hasta el momento, así que entiendes la idea detrás de mi lógica.


Probablemente esto sea un espacio sin interrupciones, intente reemplazarlo en el espacio:

$result = file_get_contents($googleCurrencyApi . $amount . $from . ''=?'' . $to); $result = str_replace("/xA0", " ", $result);


Después de str_replace do:

$result_amt = utf8_decode($amount);

Obtendrás el ? personaje en lugar de espacio. Entonces, ¿usar str_replace nuevamente para eliminar ? personaje:

$result =str_replace("?","", $result_amt );