Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите вытащить курсы валют / 3 сообщений из 3, страница 1 из 1
07.12.2005, 15:01:16
    #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
15.12.2005, 01:45:54
    #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
15.12.2005, 01:51:27
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите вытащить курсы валют / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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