Приветствую Форумчане!
Решил сделать для сайта виджет курса валют.
Для Казахстана парсир гугл www.google.com/finance/converter
Написал вот такой код
<?php
define('KEY', true);
$from[1] = 'USD';
$from[2] = 'EUR';
$from[3] = 'RUB';
$to = 'KZT';
$i = 0;
$kurs = "<div class=\"kursy\">\n";
while($i <= 2) {
$i++;
$get = file_get_contents("https://www.google.com/finance/converter?a=1&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);
switch($from[$i]){
case 'USD':
$flags = "usa.png";
break;
case 'EUR':
$flags = "euro.png";
break;
case 'RUB':
$flags = "rus.png";
break;
}
$kurs .= "<table>\n";
$kurs .= "<tr>\n";
$kurs .= "<td class=\"krs\">".$from[$i]."</td>\n";
$kurs .= "<td class=\"krs1\"><img src=\"http://olm.kz/skins/images/".$flags."\" /></td>\n";
$kurs .= "<td class=\"krs2\">".$converted_amount." тг<br/></td>\n";
$kurs .= "</tr>";
$kurs .= "</table>";
}
$kurs .= "</div>\n";
echo json_encode($kurs);
На сайт я его подгружаю через аякс. Но вот в логах порой появляется ошибка вида
Как раз ссылается на
file_get_contentsНемного погуглив понял что нужно использовать не file_get_contents, а CURL.
Посмотрев мануал попробовал написать на CURL, но конечно получилось
не с первого раза.
Написал код вот так
<?php
define('KEY', true);
$from[1] = 'USD';
$from[2] = 'EUR';
$from[3] = 'RUB';
$to = 'KZT';
$i = 0;
$kurs = "<div class=\"kursy\">\n";
while($i <= 2) {
$i++;
$pars = curl_init();
curl_setopt($pars, CURLOPT_URL, "https://www.google.com/finance/converter?a=1&from=$from[$i]&to=$to");
curl_setopt($pars, CURLOPT_HEADER, false);
curl_setopt($pars, CURLOPT_RETURNTRANSFER, true);
curl_setopt($pars, CURLOPT_CONNECTTIMEOUT, 5);
$get = curl_exec($pars);
curl_close($pars);
$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);
switch($from[$i]){
case 'USD':
$flags = "usa.png";
break;
case 'EUR':
$flags = "euro.png";
break;
case 'RUB':
$flags = "rus.png";
break;
}
$kurs .= "<table>\n";
$kurs .= "<tr>\n";
$kurs .= "<td class=\"krs\">".$from[$i]."</td>\n";
$kurs .= "<td class=\"krs1\"><img src=\"http://olm.kz/skins/images/".$flags."\" /></td>\n";
$kurs .= "<td class=\"krs2\">".$converted_amount." тг<br/></td>\n";
$kurs .= "</tr>";
$kurs .= "</table>";
}
$kurs .= "</div>\n";
echo json_encode($kurs);
Вроде работает, причем намного быстрее чем с file_get_contents
Так вот, правильно ли написан код или я может что упустил из виду?
_