powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите вытащить курсы валют
3 сообщений из 3, страница 1 из 1
Помогите вытащить курсы валют
    #33422529
ofreya3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<?php

//Формируем сегодняшнюю дату.

$date = date("d/m/Y");

//Формируем ссылку.

$link = "http://www.cbr.ru/currency_base/D_print.asp?date_req=$date";

//Загружаем HTML-страницу

$fd = fopen($link, "r");
$text="";

if (!$fd) echo "Запрашиваемая страница не найдена";

else

{

//Чтение содержимого файла в переменную $text

while (!feof ($fd)) $text = fgets($fd, 4096);

}

//Закрываем файловый дескриптор

fclose ($fd);
//Извлекаем курс доллара

preg_match("|Доллар США[^>]*>[^>]*>([\d,\.]*)|i", $text, $out);

echo "Курс доллара - ".$out[1];

//Извлекаем курс Евро

preg_match("|ЕВРО[^>]*>[^>]*>([\d,\.]*)|i", $text, $out);

echo "Курс ЕВРО - ".$out[1];

?>

Выдает ошибку: Где 15 и 24 строки выделены красным цветом

Warning: fopen(http://www.cbr.ru/currency_base/D_print.asp?date_req=07/12/2005) [function.fopen]: failed to open stream: Операция на незаблокированном сокете не может быть завершена немедленно. in C:\Documents and Settings\sait\session\c_bank.php on line 15
Запрашиваемая страница не найдена
Warning: fclose(): supplied argument is not a valid stream resource in C:\Documents and Settings\sait\session\c_bank.php on line 24
Курс доллара - Курс ЕВРО -
...
Рейтинг: 0 / 0
Помогите вытащить курсы валют
    #33436948
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Проверьте get_cfg_var('allow_url_fopen').

2. А вообще зачем разбирать HTML? XML лучше, и у ЦБ есть вебсервис (вебслужба)

http://www.cbr.ru/scripts/XML_daily.asp?date_req= dd/mm/yyyy
...
Рейтинг: 0 / 0
Помогите вытащить курсы валют
    #33436949
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот черновой JavaScript, не отягощенный дизайном. Работать будет, наверное, только в IE 5.5+, зато выдает текущие курсы валют вообще без серверного кодирования

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
<HTML>
<HEAD>

<XML id='oXSLT'>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html"  encoding="UTF-8" indent="yes"/>
 <xsl:template match="ValCurs">
 <!-- красоту и стили навести по вкусу -->
  <b><xsl:value-of select="@Date"/></b>
  <table>
		 <xsl:apply-templates/> 
	</table>
 </xsl:template>
 <xsl:template match="Valute">
	 <tr>
	 <td>
	   <xsl:value-of select="Nominal"/>
	 </td>
	 <td>
     <xsl:value-of select="Name"/> (<xsl:value-of select="NumCode"/>)
   </td>
	 <td>
	   <xsl:value-of select="Value"/>
	 </td>
	 </tr>
	</xsl:template>
</xsl:stylesheet>
</XML>

<SCRIPT>
var oXML_Data=new ActiveXObject('MSXML2.DOMDocument.3.0');
var oXSLT_Data=new ActiveXObject('MSXML2.DOMDocument.3.0');

  
     
     // так как элемент <XML> использует более старую библиотеку MSXML 2.6, в которой не работает
     // xmlns:xsl="http://www.w3.org/1999/XSL/Transform", делаем вот это:
           oXSLT_Data.loadXML(oXSLT.xml); 

   

  oXML_Data.async=false; 
  oXML_Data.onreadystatechange=function () {
   if(oXML_Data.readyState==4) { document.getElementById('informDiv').innerHTML=oXML_Data.transformNode(oXSLT_Data);  }
  }


/**********************/
/* вместо текущей даты можно использовать какой-нибудь красивый календарь-контроль */
 function todayString() {
/**********************/
  var td = new Date();
  var  day=td.getDate();
     if (day<10) { day='0'+day; }
 var month=td.getMonth()+1;
     if (month<10) { month='0'+month; }
  
    return day+'/'+month+'/'+td.getYear();
}



 window.onload=function ()
              { oXML_Data.load('http://www.cbr.ru/scripts/XML_daily.asp?date_req='+todayString()); } 


	

</SCRIPT>
</HEAD>

<BODY>
<DIV id="informDiv"></DIV>
</BODY>
</HTML>
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите вытащить курсы валют
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]