#3 12.01.08 22:08
Re: [РНР]Подкиньте идею
Код: php:
<? $addr = "http://www.rbc.ru/index.html"; // адрес страницы $begblock1 = "USD ЦБ РФ"; $begblock2 = "EUR ЦБ РФ"; // идентификатор начала блока $begin = "<FONT SIZE=\"-2\">"; // фрагмент HTML-кода до полезных данных $end = "</FONT>"; // фрагмент HTML-кода после полезных данных $result = array(); // массив строк результата $screen = file($addr); $i = 0; while ($i < sizeof($screen) && strpos($screen[$i], $begblock1) == false) {$i++;} $temp = explode($begin, $screen[$i + 2]); $temp = explode($end, $temp[1]); $kursdollar = $temp[0]; $i = 0; while ($i < sizeof($screen) && strpos($screen[$i], $begblock2) == false) {$i++;} $temp = explode($begin, $screen[$i + 2]); $temp = explode($end, $temp[1]); $kurseuro = $temp[0]; echo "Доллар - <B>$kursdollar</B><BR>Евро - <B>$kurseuro</B>"; ?>
будет работать если у клиента есть доступ к этому сайту (www.rbc.ru)
Исправлено M16 (12.01.08 22:09)
Offline
#5 13.01.08 12:44
Re: [РНР]Подкиньте идею
M16 написал(а):
будет работать если у клиента есть доступ к этому сайту (www.rbc.ru)
если у сервера :)
Offline
#6 13.01.08 20:34
Re: [РНР]Подкиньте идею
M16, ваш код - унылое г-но. Не засоряйте, пожалуйста, мою Вселенную.
Offline
#7 14.01.08 02:46
Re: [РНР]Подкиньте идею
тут ктстати можно немного пофонтазирвать и обновлять не при каждом заходе юзера на сайт (что будет при коде, описанном выше, если 6000 чел в день заходит?)
В коде ниже используется модуль pear mdb2. Код призван только показать логику процесса и не более:)
Код: php:
// пытаемся забрать данные из локальной БД $query = "select * from ".$db_prefix."currency where time=(select max(time) from ".$db_prefix."currency)"; $result = $mdb2->query($query); $row = $result->fetchRow(); $curr_time = time(); // не думаю, что имеет смысл обновлять подобную инфу чаще, чем раз в 6 часов если прошлое обновление прошло успешно. Если не прошло, то раз в 10 минут if ((($curr_time - $row['time']) > 21600) || (!$row[usd] && ($curr_time - $row['time']) > 600)) { $currency_cb_url = "http://stock.rbc.ru/demo/cb.0/intraday/index.rus.shtml"; $usd_cb_curr = 0; $eur_cb_curr = 0; $currency_cb_array = preg_replace("/\n/", "", @file_get_contents($currency_cb_url)); if ($currency_cb_array) { $usd_cb_pattern = "/\<B\>Доллар США\<\/B\>\<\/TD\>\<TD\>([0-9\.]+)\<\/TD\>/"; $eur_cb_pattern = "/\<B\>ЕВРО\<\/B\>\<\/TD\>\<TD\>([0-9\.]+)\<\/TD\>/"; preg_match ($usd_cb_pattern, $currency_cb_array, $usd_cb_array); preg_match ($eur_cb_pattern, $currency_cb_array, $eur_cb_array); $usd_cb_curr = round($usd_cb_array[1], 2); $eur_cb_curr = round($eur_cb_array[1], 2); } $query = "insert into ".$db_prefix."currency(time, usd, eur) values($curr_time, $usd_cb_curr, $eur_cb_curr)"; $result = $mdb2->query($query); } else { $usd_cb_curr = $row['usd']; $eur_cb_curr = $row['eur']; }
соответственно, если на выходе имеем значения, равные нулю, значит есть некий косяк с коннектом до сайта - источника и можем к примеру не показывать на это время курсы валют.
Offline
#8 14.01.08 02:50
Re: [РНР]Подкиньте идею
ну а также метод выше собирает локальную динамику курсов. Если это не нужно, в таблице убираем автоинкремент и "select * from ".$db_prefix."currency", ну и "limit 0,1" на всякий случай, а второй запрос меняем с insert на update и туда же пишем последний time
Исправлено Antony (14.01.08 02:51)
Offline
#9 14.01.08 16:14
Re: [РНР]Подкиньте идею
OMG, еще один. Кто-нибудь еще хочет высказаться? Ну смелее, присоединяйтесь к нашему празднику жизни.
Offline
#10 14.01.08 16:43
#11 14.01.08 17:12
Re: [РНР]Подкиньте идею
iDrum, превед. нет, я круче. У нас тут праздник разумной жизни, вэлкам. Каждый самовыражается и фантазирует.
Не, ребята, так не надо. Зачем пришел доцент и что он спросил? Он спросил
Как отобразить на своей страничке информацию с другой
тут же набежала стайка доброхотов с говнокодом.
Ребята, НЕТ никакого кода. Есть вопрос (см. выше), на который есть простой ответ: нужно обратиться к серверу, получить ответ, выделить из ответа интересующую информацию, отдать клиенту. всё. больше ничего нет.
А, чуть не забыл: воровать - плохо.
Offline
#12 14.01.08 18:12
Re: [РНР]Подкиньте идею
Bred Vilchec, если ты тут такой умный, что ж ты свой код не написал, а то поразвелось тут критиков...
кстати насчёт воровать, вышеприведённый код не был ниоткуда сворован, а был мной написан с нуля. А если ты про сбор данных с другого сайта - ваще-то rbc - это открытый источник
Offline
#13 14.01.08 18:16
#14 14.01.08 18:40
#15 14.01.08 19:22
Re: [РНР]Подкиньте идею
Ой, сколько вас. Все оффтопичные вопросы спрашивайте в киосках вашего города. здесь не про это.
при чем тут воровство?
см. также "кража контента".
что ж ты свой код не написал
код, код... нету никакого кода! КОД. Ему здесь вообще не место.
Offline
#16 14.01.08 23:05
#17 17.01.08 03:24
Re: [РНР]Подкиньте идею
Bred Vilchec написал(а):
Ребята, НЕТ никакого кода. Есть вопрос (см. выше), на который есть простой ответ: нужно обратиться к серверу, получить ответ, выделить из ответа интересующую информацию, отдать клиенту. всё. больше ничего нет.
а зачем в теме написано "[php]" если всё так просто как ты напсал?
Offline

