51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
// Функция для получения HTML-кода страницы
|
|||
|
|
function getCurrencyPage($date) {
|
|||
|
|
$url = "https://cbr.ru/currency_base/daily/?UniDbQuery.Posted=True&UniDbQuery.To=" . $date;
|
|||
|
|
|
|||
|
|
$ch = curl_init();
|
|||
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|||
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|||
|
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
|||
|
|
$html = curl_exec($ch);
|
|||
|
|
curl_close($ch);
|
|||
|
|
|
|||
|
|
return $html;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Функция для парсинга HTML и извлечения курсов валют
|
|||
|
|
function parseCurrencies($html) {
|
|||
|
|
$doc = new DOMDocument();
|
|||
|
|
@$doc->loadHTML($html);
|
|||
|
|
$xpath = new DOMXPath($doc);
|
|||
|
|
|
|||
|
|
// Находим строки таблицы с курсами валют
|
|||
|
|
$rows = $xpath->query('//table[contains(@class, "data")]//tr');
|
|||
|
|
$currencies = [];
|
|||
|
|
|
|||
|
|
foreach ($rows as $row) {
|
|||
|
|
$cols = $row->getElementsByTagName('td');
|
|||
|
|
if ($cols->length > 0) {
|
|||
|
|
$code = trim($cols->item(1)->nodeValue);
|
|||
|
|
$rate = trim($cols->item(4)->nodeValue);
|
|||
|
|
$currencies[$code] = $rate;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return $currencies;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Используем функции
|
|||
|
|
$date = "01.02.2024"; // Указанная дата
|
|||
|
|
$html = getCurrencyPage($date);
|
|||
|
|
$currencies = parseCurrencies($html);
|
|||
|
|
|
|||
|
|
// Выводим результат
|
|||
|
|
echo "Курсы валют на дату $date:\n";
|
|||
|
|
foreach ($currencies as $code => $rate) {
|
|||
|
|
echo "$code: $rate\n";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
?>
|