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; ?>
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.
Přidat komentář