За последние 24 часа нас посетили 32483 программиста и 1755 роботов. Сейчас ищут 854 программиста ...

Как записать текущий курс валюты в переменную?

Тема в разделе "PHP для новичков", создана пользователем sound, 20 янв 2008.

  1. sound

    sound Guest

    Нашел нужный пример но он не работает

    PHP:
    1. // Формируем сегодняшнюю дату
    2. $date = date("d/m/Y");
    3. // Формируем ссылку
    4. $link = "http://www.cbr.ru/currency_base/D_print.asp?date_req=$date";
    5. // Загружаем HTML-страницу
    6. $fd = fopen($link, "r");
    7. $text="";
    8. if (!$fd) echo "Запрашиваемая страница не найдена";
    9. else
    10. {
    11. // Чтение содержимого файла в переменную $text
    12. while (!feof ($fd)) $text .= fgets($fd, 4096);
    13. }
    14. // Закрыть открытый файловый дескриптор
    15. fclose ($fd);
    16. // Извлекаем курс доллара
    17. preg_match("|Доллар США[^>]*>[^>]*>([\d,\.]*)li", $text, $out);
    18. echo "Курс доллара - ".$out[1];
    19. // Извлекаем курс ЕВРО
    20. preg_match("|EBPO[^>]*>[^>]*>([\d,\.]*)|i", $text, $out);
    21. echo "<br>Kypc ЕВРО - ".$out[1];
    22.  
    Выдает несколько ошибок
    проверял переменная $text существует вроде бы должно работать
    помогите исправить что не так в этом коде ?
     
  2. Demon

    Demon Активный пользователь

    С нами с:
    20 апр 2006
    Сообщения:
    239
    Симпатии:
    0
  3. sound

    sound Guest

    Demon
    ответа не нашел
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    PHP:
    1. <?php
    2.  
    3. $date=date("d/m/Y");
    4. $content=file_get_contents("http://www.cbr.ru/currency_base/D_print.asp?date_req=$date");
    5. $content=str_replace("&"."nbsp;"," ",$content);
    6. $content=preg_replace("{\s+}"," ",$content);
    7. $content=str_replace("> <","><",$content);
    8. $pattern=
    9.   "{<tr bgcolor=\"#ffffff\"><td.*?>(\d+)</td><td.*?>\s?(\w+)</td>".
    10.   "<td.*?>(\d+)</td><td>\s?(.*?)</td><td.*?>([\d.,]+)</td></tr>}";
    11. preg_match_all($pattern,$content,$matches,PREG_SET_ORDER);
    12. $currency=array();
    13. foreach($matches as $match) $currency[$match[2]]=
    14.   array("code"=>$match[1],"num"=>$match[3],"title"=>$match[4],"rate"=>$match[5]);
    15.  
    16. echo $currency["USD"]["rate"]; // 24,5076
     
  5. sound

    sound Guest

    Dagdamor
    огромное спасибо!
    все работает