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

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

<?php
$amount = ‘1’;
$from[1] = ‘USD’;
$from[2] = ‘EUR’;
$from[3] = ‘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("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);
$converted_amount = round($converted_amount,2);
echo $amount.’ ‘.$from[$i].’ = ‘.$converted_amount.’ ‘.$to.'<br />’;
}
?>

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

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

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

<?php
// Start output buffering
ob_start();

$amount = ‘1’;
$from[1] = ‘USD’;
$from[2] = ‘EUR’;
$from[3] = ‘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("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);
$converted_amount = round($converted_amount,2);
echo $amount.’ ‘.$from[$i].’ = ‘.$converted_amount.’ ‘.$to.'<br />’;
}

// 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 выводить скрипт в виджетах:

<iframe src="http://вашсайт/scripts/currency.html"></iframe>

Я немного пошел другим путем. Добавил JQuery библиотеку (она у меня и так стояла, так как активно использую эту javascript библиотеку у себя на сайте). И добавил виджет с таким содержанием:

<div id="currency"></div>

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

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

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

автор: Наманов Шухрат

Информер курса валют на сайт (php скрипт).
32 оценок, Средняя оценка: 4.8 из 5

  1. Задумка хорошая, но я искала виджет на курс биткойна, которого по ссылке гугла нет. Будет ли работать виджет, если изменить ссылку запроса источника?

    1. Да, вы можете поменять в скрипте значение, на:

      $amount = ‘1’;
      $from[1] = ‘BTC’;

      И скрипт будет парсить курс биткоина через google сервис.

  2. Как сделать вывод в таблице в шахматном варианте на 5 валют? Каждый с каждым чтобы показывал курс.

  3. Не работает скрипт выводит курс 0
    Не вижу где и как присваивается значения переменным $get[0] и $get[1]
    а вы их используете :
    $get = explode(“”,$get[1]);
    $converted_amount = preg_replace(“/[^0-9\.]/”, null, $get[0]);

  4. Проверил работоспособность, чтоб работало необходимо удалить две строки
    $converted_amount = preg_replace(“/[^0-9\.]/”, null, $get[0]);
    $converted_amount = round($converted_amount,2);
    они лишнии, вместо них надо вставить строку:
    $converted_amount = substr($get[‘0’],0,-6);
    И тогда скрипт работает отлично

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *