Простой парсер валюты на PHP

Assasin
Очень сложно найти "простой" по мнению новичка парсер валюты. все примеры которые я нагуглил делаются через ООП и функции,получается сотни строк кода и самое смешное делают это для примера. глупо когда нужно парсить всего одну строчку.
Вот этот код парсит доллар и евро с сайта ЦБ

Код: Выделить всё

<?
$date = date("d/m/Y");
 
//Определим код нашей валюты на сайте cbr.ru
//Америконский доллар
$d = 'R01235';
$e = 'R01239';
 
//Выполняем первый пункт, считываем страницу с курсами валют в переменную
$file = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date);

 
//Разбираем страницу с помощью регулярок:
preg_match("/\<Valute ID=\"".$d."\".*?\>(.*?)\<\/Valute\>/is", $file, $m);
 
preg_match("/<Value>(.*?)<\/Value>/is", $m[1], $r);

preg_match("/\<Valute ID=\"".$e."\".*?\>(.*?)\<\/Valute\>/is", $file, $eu);
 
preg_match("/<Value>(.*?)<\/Value>/is", $eu[1], $eur);

 
//Запятую, отделяющую дробную часть заменяем на точку, и у нас в переменной $dollar находится курс доллара.
$dollar = str_replace(",", ".", $r[1]);
$euro = str_replace(",", ".", $eur[1]);
?>
Вернуться к началу

AgentSIB
Вот тебе еще проще и еще короче ) Твой любимый simpleXML )))))

Код: Выделить всё

$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));

$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
echo $valute;

echo '<br>';
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute2 = strval($xml[0]->Value);
echo $valute2;
Однако вот так более интересней :)

Код: Выделить всё

$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));

$valutes = array();

foreach ($file AS $el){
    $valutes[strval($el->CharCode)] = strval($el->Value);
}
print_r($valutes);
В результате имеем массив с валютами, выбирай какую хочешь)

Код: Выделить всё

Array
(
    [AUD] => 31,8560
    [AZN] => 40,9456
    [GBP] => 50,2021
    [AMD] => 86,7297
    [BYR] => 57,6904
    [BGN] => 22,3069
    [BRL] => 17,6694
    [HUF] => 15,0737
    [DKK] => 58,6332
    [USD] => 32,2201
    [EUR] => 43,6357
    [INR] => 65,5813
    [KZT] => 21,8234
    [CAD] => 31,4097
    [KGS] => 71,4816
    [CNY] => 50,3557
    [LVL] => 61,4887
    [LTL] => 12,6368
    [MDL] => 26,9850
    [NOK] => 56,0057
    [PLN] => 99,3313
    [RON] => 10,1433
    [XDR] => 50,3017
    [SGD] => 25,0467
    [TJS] => 67,5871
    [TRY] => 17,4059
    [TMT] => 11,3291
    [UZS] => 18,4473
    [UAH] => 40,2786
    [CZK] => 17,7199
    [SEK] => 47,3456
    [CHF] => 35,7247
    [ZAR] => 40,5218
    [KRW] => 27,4214
    [JPY] => 42,1701
)
Вернуться к началу

Assasin
Спасибо и в правду очень просто))
Вернуться к началу