Парсер валют на PHP. Помощь спарсить значения с сайта.

r_vyacheslav

Гуру форума
Регистрация
18 Авг 2015
Сообщения
174
Реакции
67
Не могу получить значения с страницы: Для просмотра ссылки Войди или Зарегистрируйся... Не могу понять как спарсить курс, помогите разобраться и подскажите где ошибка. Проблема кроется где-то в разборе json мне так кажеться...

Мой фрагмент кода:
Код:
    $html = file_get_html('https://kharkov.obmenka.ua/USD-UAH');

    $json = '';
    foreach($html->find('script') as $e) {
        if (strpos($e->innertext,'window.obmenkaData') !== false) {
            $json = str_replace('window.obmenkaData = ', '', $e->innertext);
            $json = str_replace(';', '', $json);
            break;
        }
    }

    if ($json) {
        $manage = json_decode($json);

        $valUSD = $manage->rates[0]->amountRetailTo;       

        $valEUR = $manage->rates[1]->amountRetailTo;   

    $codEUR="EUR";
       
    $codUSD="USD";   
   
    date_default_timezone_set('Europe/Kiev');
    $date=date('Y-m-d H:i:s');

    $stmt = $db->query("SELECT * FROM " . DB_PREFIX . "currency");

        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo $row['code'] ;
            switch ($row['code']){
            case 'UAH':
                     break;
            case $codEUR:
            if(($valEUR == true) && number_format($valEUR, 2, '.', '') != number_format($row['value'], 2, '.', '')){
                     $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($valEUR, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codEUR . "'");
                     repriceProducts($row['currency_id'], $valEUR, $db);
                     echo $row['currency_id']."--".$valEUR."<br>";
                     }
                     break;
            case $codUSD:
            if(($valUSD == true) &&  number_format($valUSD, 1, '.', '') != number_format($row['value'], 1, '.', '')){
                     $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($valUSD, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codUSD . "'");
                     repriceProducts($row['currency_id'], $valUSD, $db);
                     echo $row['currency_id']."--".$valUSD."<br>";
                     }
                     break;
            }           
        }


$defaultd=$db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code='USD'")->fetch(PDO::FETCH_ASSOC);
echo ' Курс обновился в ('.$defaultd['date_modified'].')';

}
 
как по мне вообще бред полный зачем дергать какой-то не понятный json который еще и для других целей используется если можно просто через regexp дернуть все что нужно со страницы.
 
1) $a = file_get_contents
2) preg_match_all('"price" : "(.*?)"',$a,$b);
3) print_r($b);
в 3-ем шаге в первых двух элементов массива увидишь свои заветные курсы
 
Назад
Сверху