Jak na kurzy měn pomocí PHP, JSON a Google

Jistě dobře víte, že Google vám na požádání převede různé měrné jednotky na jiné. To stejné umí s penězi, stačí zadat částku, zdrojovou a cílovou měnu. Možná ale nevíte, že nabízí API, které lze pro převody měn využít i ve vašich webových aplikacích.

Ještě jste měnu pomocí Google nepřeváděli a tato informace je pro vás nová? Pak to honem napravte. Otevřete si Google nebo použijte hledací políčko v prohlížeči a napište 10 USD to CZK. Po vyhledání tohoto „výrazu“ vám Google sdělí, že 10 dolarů je tolik a tolik českých korun. Syntaxe je tedy zřejmá. Zadáte částku, kód zdrojové měny, klíčové slovo „to“ a kód cílové měny.

Pokud chcete jednoduchý převodník měn nabídnout na svém webu (podobně, jako to mám na Crikvenica-Chorvatsko.cz, kde ale Google nevyužívám), pak určitě uvítáte, že Google nabízí přístup ke svému konvertoru pomocí JSON. Funguje to jednoduše. Sestavíte URL v potřebném formátu a na ní se vám vrátí výstup ve formátu JSON, který ve své aplikaci dále zpracujete.

Google nevrací validní JSON

Problém je bohužel v tom, že Google sám o sobě nevrací validní JSON. Můžete se přesvědčit. Syntaxe pro adresu Google Convertoru je následující:

http://www.google.com/ig/calculator?q=10USD=?CZK

První parametr ve výše uvedeném URL označuje výši částky a výchozí měnu, druhý pak měnu cílovou. Když se podíváte na vrácený výsledek, vidíte, že k validnímu JSONu, který by bylo možné zpracovat například v PHP pomocí funkce json_decode() něco chybí. Výrazy lhs, rhs, error a icc nejsou v uvozovkách. Funkce json_decode() si s tím neporadí, podobný problém byste měli i při zpracování pomocí JavaScriptu.

Můžete tedy buď tento výstup upravit pomocí regulárních výrazů tak, abyste získali validní JSON, nebo zkuste sáhnout po nástroji, který rovněž pracuje s daty z Google, ale výsledek převádí do použitelné podoby. Navíc bez slovního popisu měny, takže se vám bude lépe začleňovat do vašich skriptů.

Zpracování validního JSON pro převod měny v PHP

Následující kód je velmi jednoduchý. Použít jej můžete například jako obsluhu pro zpracování dat z nějakého formuláře. Do trojice proměnných přiřadíme výši částky a zdrojovou a cílovou měnu. Poté sestavíme URL, které nám vrátí převedenou měnu ve formátu JSON.

Vygenerovaný JSON z takto sestavené adresy načteme jako soubor a následně jej dekódujeme na jednotlivá data. K nim pak už stačí přistupovat jako k polím PHP. Zajímat nás bude především $data['v'] obsahující převedenou částku. Stačí ji ještě zaokrouhlit a můžeme poskládat výstupní řetězec.

<?php

$castka = 10;
$mena_zdroj = 'USD';
$mena_cil = 'CZK';

$url = 'http://rate-exchange.appspot.com/currency?from='.$mena_zdroj.'&to='.$mena_cil.'&q='.$castka;

$json = file_get_contents($url);
$data = json_decode($json, true);

print $castka .' '. $mena_zdroj .' = '. round($data['v'],2).' '.$mena_cil;

?>

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru