THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

В некоторых случаях при работе с коммерцией возникает необходимость получения актуальной информации о курсе той или иной валюты. Центробанк – лучший источник таких данных, а учитывая то, что он предоставляет открытую и своевременно обновляемую информацию о курсе валют в формате XML – грех ею не воспользоваться.

Функция эта выглядит следующим образом:

Function get_currency($currency_code, $format) { $date = date("d/m/Y"); // Текущая дата $cache_time_out = "3600"; // Время жизни кэша в секундах $file_currency_cache = __DIR__."/XML_daily.asp"; if(!is_file($file_currency_cache) || filemtime($file_currency_cache) < (time() - $cache_time_out)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); file_put_contents($file_currency_cache, $out); } $content_currency = simplexml_load_file($file_currency_cache); return number_format(str_replace(",", ".", $content_currency->xpath("Valute")->Value), $format); }

В ней строки:

$date = date("d/m/Y"); // Текущая дата $cache_time_out = "3600"; // Время жизни кэша в секундах

отвечают за дату (в нашем случае она текущая) и время жизни кэша соответственно. Поскольку ЦБ не так часто обновляет данные о валютах, не стоит докучать ему просто так при каждом их использовании. Значения в этих строках (по желанию) можете изменить на свои.

Использование функции следующее:

Echo get_currency("USD", 3);

Здесь «USD » – символьный код валюты (в нашем случае – это доллар США), а «3 » – количество знаков после запятой.

Допустимый перечень валют, предоставляемых ЦБ РФ (на момент написания статьи) в виде «символьный код валюты – номинал и название»:

AUD – 1 австралийский доллар AZN – 1 азербайджанский манат GBP – 1 фунт стерлингов Соединенного королевства AMD – 100 армянских драмов BYN – 1 белорусский рубль BGN – 1 болгарский лев BRL – 1 бразильский реал HUF – 100 венгерских форинтов HKD – 10 гонконгских долларов DKK – 10 датских крон USD – 1 доллар США EUR – 1 евро INR – 100 индийских рупий KZT – 100 казахстанских тенге CAD – 1 канадский доллар KGS – 100 киргизских сомов CNY – 10 китайских юаней MDL – 10 молдавских леев NOK – 10 норвежских крон PLN – 1 польский злотый RON – 1 румынский лей XDR – 1 СДР (специальные права заимствования) SGD – 1 сингапурский доллар TJS – 10 таджикских сомони TRY – 1 турецкая лира TMT – 1 новый туркменский манат UZS – 10 000 узбекских сумов UAH – 10 украинских гривен CZK – 10 чешских крон SEK - 10 шведских крон CHF – 1 швейцарский франк ZAR – 10 южноафриканских рэндов KRW – 1 000 вон Республики Корея

Надеюсь, функция найдет свое место в вашем проекте. Если остались вопросы или что-то показалось непонятным – обязательно пишите об этом в комментариях под данной статьей.

В некоторых случаях при работе с коммерцией возникает необходимость получения актуальной информации о курсе той или иной валюты. Центробанк – лучший источник таких данных, а учитывая то, что он предоставляет открытую и своевременно обновляемую информацию о курсе валют в формате XML – грех ею не воспользоваться.

Функция эта выглядит следующим образом:

Function get_currency($currency_code, $format) { $date = date("d/m/Y"); // Текущая дата $cache_time_out = "3600"; // Время жизни кэша в секундах $file_currency_cache = __DIR__."/XML_daily.asp"; if(!is_file($file_currency_cache) || filemtime($file_currency_cache) < (time() - $cache_time_out)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); file_put_contents($file_currency_cache, $out); } $content_currency = simplexml_load_file($file_currency_cache); return number_format(str_replace(",", ".", $content_currency->xpath("Valute")->Value), $format); }

В ней строки:

$date = date("d/m/Y"); // Текущая дата $cache_time_out = "3600"; // Время жизни кэша в секундах

отвечают за дату (в нашем случае она текущая) и время жизни кэша соответственно. Поскольку ЦБ не так часто обновляет данные о валютах, не стоит докучать ему просто так при каждом их использовании. Значения в этих строках (по желанию) можете изменить на свои.

Использование функции следующее:

Echo get_currency("USD", 3);

Здесь «USD » – символьный код валюты (в нашем случае – это доллар США), а «3 » – количество знаков после запятой.

Допустимый перечень валют, предоставляемых ЦБ РФ (на момент написания статьи) в виде «символьный код валюты – номинал и название»:

AUD – 1 австралийский доллар AZN – 1 азербайджанский манат GBP – 1 фунт стерлингов Соединенного королевства AMD – 100 армянских драмов BYN – 1 белорусский рубль BGN – 1 болгарский лев BRL – 1 бразильский реал HUF – 100 венгерских форинтов HKD – 10 гонконгских долларов DKK – 10 датских крон USD – 1 доллар США EUR – 1 евро INR – 100 индийских рупий KZT – 100 казахстанских тенге CAD – 1 канадский доллар KGS – 100 киргизских сомов CNY – 10 китайских юаней MDL – 10 молдавских леев NOK – 10 норвежских крон PLN – 1 польский злотый RON – 1 румынский лей XDR – 1 СДР (специальные права заимствования) SGD – 1 сингапурский доллар TJS – 10 таджикских сомони TRY – 1 турецкая лира TMT – 1 новый туркменский манат UZS – 10 000 узбекских сумов UAH – 10 украинских гривен CZK – 10 чешских крон SEK - 10 шведских крон CHF – 1 швейцарский франк ZAR – 10 южноафриканских рэндов KRW – 1 000 вон Республики Корея

Надеюсь, функция найдет свое место в вашем проекте. Если остались вопросы или что-то показалось непонятным – обязательно пишите об этом в комментариях под данной статьей.

В интернете немало скриптов, которые показываю курсы валют. Но мне нужен был курс доллара и евро от центрального банка. Я решил поискать скрипты, которые покажут официальные курсы валют на заданную дату . Я наткнулся на интересную статью jQuery сортировка таблицы . Там в скрипте "PHP парсер курсов валют " грабится xml-документ с помощью регулярных выражений. В ограблении кода активно используются регулярные выражения. Скрипт классно работает, но имеет свои особенности. Он выводит таблицу в HTML с большим количеством валют. Мне нужно сформировать из таблицы с курсами валют массив JSON . Этот массив подобен колбасе. Именно так называют программисты подобный массив. Бывают очень большие колбасы в большом количестве)))

/* * getArr() * курсы валют от центрального банка * происходит парсинг xml-документа * */ function getArr() { $url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=". date("d/m/Y",strtotime("+0 day")); $cbr_xml = str_replace(array("\n","\r","\t"),"",getContentPage($url)); if(preg_match_all("~ (.*?) ~i",$cbr_xml,$Valute)) { foreach($Valute as $data) { preg_match("~ (.*?) ~i",$data,$CharCode); preg_match("~ (.*?) ~i",$data,$NumCode); $arr[$CharCode]["num_code"].= $NumCode; preg_match("~ (.*?) ~i",$data,$Nominal); $arr[$CharCode]["nominal"] = $Nominal ; preg_match("~ (.*?) ~i",$data,$Name); $arr[$CharCode]["name"].= toUtf8($Name); preg_match("~ (.*?) ~i",$data,$Value); $arr[$CharCode]["value"].= $Value; $i++; } return $arr; } } function getContentPage($url) { $c = curl_init($url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); $text = curl_exec($c); curl_close($c); return $text; } //кодируем в Utf8 function toUtf8($str) { return mb_convert_encoding($str, "utf-8", "windows-1251"); } $arr = getArr(); echo json_encode($arr); /* { "EUR":{"num_code":"978", "nominal":"1", "name":"\u0415\u0432\u0440\u043e", "value":"63,6090"}, "USD":{"num_code":"840", "nominal":"1", "name":"\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u0428\u0410", "value":"58,0374"} }*/

Вы можете просмотреть как сегодняшний курс валюты, так и курс за вчерашний день . Функция strtotime("+0 day") позволяет менять время. Конечно сколько нулей не плюсуй все равно значение переменной не изменится. Я оставил эту часть кода для того чтобы в любой момент можно было изменить время. Мне пришлось немного переделать массив. Я использовал переменную $CharCode как ключ для массива. В моём большом массиве есть множество других массивов и обращаться к определённому массиву можно только по ключу (EUR). В моём случае переменная $CharCode принимает следующие значения:

  1. AUD => Австралийский доллар
  2. AZN => Азербайджанский манат
  3. GBP => Фунт стерлингов Соединенного королевства
  4. AMD => Армянские драмы
  5. BYR => Белорусские рубли
  6. BGN => Болгарский лев
  7. BRL => Бразильский реал
  8. HUF => Венгерский форинт
  9. DKK => Датских крон
  10. USD => Доллар США
  11. EUR => Евро
  12. INR => Индийских рупий
  13. KZT => Казахстанских тенге
  14. CAD => Канадский доллар
  15. KGS => Киргизский сом
  16. CNY => Китайский юань
  17. MDL => Молдавских леев
  18. NOK => Норвежских крон
  19. PLN => Польский злотый
  20. RON => Новый румынский лей
  21. XDR => СДР (специальные права заимствования)
  22. SGD => Сингапурский доллар
  23. TJS => Таджикский сомони
  24. TRY => Турецкая лира
  25. TMT => Новый туркменский манат
  26. UZS => Узбекский сум
  27. UAH => Украинская гривна
  28. CZK => Чешских крон
  29. SEK => Шведских крон
  30. CHF => Швейцарский франк
  31. ZAR => Южноафриканский рэнд
  32. KRW => Вон Республики Корея
  33. JPY => Японская иена

Меня интересует только USD и EUR. Я не стал удалять из

Добрый день дорогие друзья. Как вы знаете, недавно (11 февраля) у нас в Казахстане произошла очередная девальвация, этот "черный вторник" как его назвали многие в интернете, ударил по карману многих. Не буду писать очередную негативную статью на эту тему. Я считаю, что это не нужно. Что сделано, то сделано. Но в тот злополучный день меня очень сильно возмутило то, что нигде в интернете нельзя было узнать точный курс доллара, евро или другой иностранной валюты. Все известные и не известные (привет google) мне сайты были не доступны. Возможно некоторые сайты попали немилость казахстанских пользователей и не были готовы к такой нагрузке пользователей. Но факт остается фактом, сайты не работали.

И вечером, когда у меня страсти о девальвации начали утихать и нервы начали приходить в свое спокойное состояние, решил, что нужно написать себе маленький информер курса валют на свой уютненький бложек . Как я сказал выше виджеты других сайтов я не хотел использовать, так как эти сайты "лежали" когда весь казнет хотел узнать, этот чертов курс валют. :) Ниже привожу скрипт информера на php, думаю скрипт не нуждается в комментариях:

$amount = "1";
$from = "USD";
$from = "EUR";
$from = "RUB";
$to= "KZT";
$i=0;
while($i <= 2){
$i++;
$get = explode("",$get);
$get = explode("
",$get);


";
}
?>

Скрипт универсальный, Вы можете изменить переменную $to на другую валюту в которую хотите конвертировать, а так же увеличить или изменить массивы $from[?] , добавить другие валюты, только не забудьте изменить условие цикла, если вы увеличили количество выводимых валют. Идентификатор (название) валют Вы можете взять по ссылке - https://www.google.com/finance/converter . Как вы наверное поняли, скрипт парсит в цикле эту страницу google"a и забирает нужную для себя информацию.

Как установить этот скрипт на свой сайт? Если у вас движок wordpress, вам нужно будет установить плагин "PHP Code Widget " и выбрать этот виджет и добавить весь код туда. Это самый легкий способ. Если возникла проблема, вы всегда можете отключить плагин и все вернется как было. Сложные варианты установки скрипта не предлагаю. Можете написать мне на почту, и я постараюсь Вам помочь. Надеюсь эта статья была вам полезна. :)

P.S: Для себя я немного оптимизировал скрипт (добавил кэширование) и дал задание cron"у раз в час обновлять скрипт. Мой вариант сохраняет *.html файл и его я вывожу в виджетах, через ajax.

// Start output buffering
ob_start();

$amount = "1";
$from = "USD";
$from = "EUR";
$from = "RUB";
$to= "KZT";
$i=0;
while($i <= 2){
$i++;
$get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from[$i]&to=$to");
$get = explode("",$get);
$get = explode("
",$get);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get);
$converted_amount = round($converted_amount,2);
echo $amount." ".$from[$i]." = ".$converted_amount." ".$to."
";
}

// saving captured output to .html file
file_put_contents("currency.html", ob_get_contents());
// end buffering and displaying page
ob_end_flush();
?>

Сохраняете скрипт в формате *.php, желательно сохранить в отдельной папке (например в папке "scripts", что бы не засорять сайт. После вам потребуется в кроне добавить задание, раз n часов обращаться к скрипту. И один через браузер раз вручную обращаетесь к скрипту, что бы он создал html файл, к которому мы в дальнейшем будем обращаться. Далее вы можете через iframe выводить скрипт в виджетах:

<script>
function show_temp()
{
$.ajax({
url: "http://вашсайт/scripts/currency.html",
cache: false,
success: function(html){
$("#currency").html(html);
}
});
}
$(document).ready(function(){
show_temp();
});

Такой способ вывода, позволит вам изменять размер шрифта, цвет шрифта или добавить любую другие эффекты через CSS (каскадную таблицу стилей).

Оптимизированный вариант скрипта, не будет нагружать сервер и постоянно обращаться к google"у. Вы можете по другому реализовать кэширование, и проверять по дате, что бы не использовать крон. Но лично я исходил из простого. Не люблю мудрить. :)

Сломалась стиральная машина? 1v.kz поможет! - Ремонт стиральных машин в Алматы :

Специалисты со всех районов города

Многие из Вас неоднократно видели, что на некоторых сайтах выводятся курсы валют . Разумеется, администраторы этих сайтов сами ежедневно их не меняют (надеюсь). Они их подгружают с сайта ЦентроБанка. И в этой статье я дам код PHP-скрипта для загрузки курсов валют с сайта ЦентроБанка и вывода их на страницу.

Привожу сразу код скрипта:

$date = date("d/m/Y"); // Сегодняшняя дата в необходимом формате
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // Ссылка на XML-файл с курсами валют
$content = file_get_contents($link); // Скачиваем содержимое страницы
$dom = new domDocument("1.0", "cp1251"); // Создаём DOM
$dom->loadXML($content); // Загружаем в DOM XML-документ
$root = $dom->documentElement; // Берём корневой элемент
$childs = $root->childNodes; // Получаем список дочерних элементов
$data = array(); // Набор данных
for ($i = 0; $i < $childs->length; $i++) {
$childs_new = $childs->item($i)->childNodes; // Берём дочерние узлы
for ($j = 0; $j < $childs_new->length; $j++) {
/* Ищем интересующие нас валюты */
$el = $childs_new->item($j);
$code = $el->nodeValue;
if (($code == "USD") || ($code == "EUR")) $data = $childs_new; // Добавляем необходимые валюты в массив
}
}
/* Перебор массива с данными о валютах */
for ($i = 0; $i < count($data); $i++) {
$list = $data[$i];
for ($j = 0; $j < $list->length; $j++) {
$el = $list->item($j);
/* Выводим курсы валют */
if ($el->nodeName == "Name") echo $el->nodeValue." - ";
elseif ($el->nodeName == "Value") echo $el->nodeValue." рублей
";
}
}
?>

Я постарался код тщательно прокомментировать, поэтому с его пониманием проблем возникнуть не должно. Так же, чтобы понять, почему столько и почему именно такие циклы, а также откуда берутся определённые условия, я настоятельно рекомендую зайти по ссылке из кода (только дату подставьте). Тогда Вы увидите XML-документ , и Вам уже будет гораздо проще понять, почему именно такой код был написан.

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама