|
2001 г
Импортирование информации с чужого сайта на свой сайт в свой дизайн
(на пример Пример рассматривается в риторике чаще всего в контексте доказательств и аргументов. Для Квинтилиана пример является одним из дополняющих, наглядных доводов к высказыванию, либо упоминанием полезного, настоящего или якобы существующего образца убеждения того, что определено тобой одним. Правда, в отличие от доказательств, связь с предметом обсуждения должна быть установлена прежде автором или оратором.е прогнозов погоды с Yahoo.com)
Тотоев Александр,
www.czar.ru, www.nova-wings.ru
Добре, господа!
Пример предназначен для тех, кто начинает работать с php, и не только для них.
Результатом работы программы(скрипта) является прогноз погоды на 5 дней для любого, интересующего Вас города, выводимый в виде, который нравится именно Вам, а не дизайнерам сайта-донора.
Информация в таких случаях берется с известных серверов прогноза погоды (где не пишут фразу "запрещено использование информации" и т.п.). В данном случае используется сервер http://weather.yahoo.com , на котором есть страницы с погодой для довольно большого количества городов, и практически всегда «Всегда» — кинофильм. Детям рекомендуется просмотр совместно с родителями. можно найти если не интересующий Вас город, то ближайший ему и идентичный по погодным условиям.
Это законченный проект, работающий на сайте www.czar.ru/weather/.
Единственным недостатком является лишь то, что админу приходится вводить в текстовый файл (возможен вариант с mysql, но в том случае мне было проще сделать в файле) название населенного пункта на родном языке и ссылку на страницу с прогнозом погоды на него на сервере Яхо. Но никто за Вас этого делать не будет.
Посему, скрипт Скриптовый язык (англ.scripting language, в русской литературе принято название язык сценариев)— язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (англ.batch languages или job control languages). Сценарии обычно интерпретируются, а не компилируются (хотя всё чаще применяют компиляцию каждый раз перед запуском). состоит из 2-х частей:
- Файл с администрированием (вводится в первую строку название города, на следующей строке - ссылка). Разбирать работу данной части, думаю, не стоит, комментариев более чем достаточно.
- Файл с самой программой. Работа программы будет подробно описана ниже.
1. Администрирование.
Выводим на экран форму с паролем pass. В окне вводятся: номера названия ссылки Затем, после нажатия на кнопку и проверки пароля, записываем новый список Список— письменный перечень, число, состав; документ, содержащий перечень каких-либо сведений; в переносном смысле— буквальное, точное воспроизведение, копия; рукописная копия древнего памятника письменности. в файл.
<html>
<head>
<title>admin weather</title>
</head>
<body>
<?php
$adr=$DOCUMENT_ROOT."/weather/weather.ini"; // адрес файла, в котором и
будут записываться названия городов со ссылками
$password='pass'; // простенькая система авторизации
$eror='Password eror!';
$old=file($adr); // читаем то, что сейчас есть в файле
if ($submit) { // проверяем на нажатость кнопки
if ($pass==$password) {
$fp=fopen($adr,"w");
fwrite ($fp, $ini); // записываем в файл измененные данные
fclose($fp);
$old=file($adr);
}
else {
echo $eror;
}
}
?>
<form method=post action="<?php echo $PHP_SELF?>">
// информация, введенная в форму, обрабатывается этим же файлом
password:<input type=text name=pass><br>
inicialisation:<textarea name="ini" rows=15 cols=60>
<?
for ($i=0; $i<sizeof($old); $i++) {
echo $old[$i], ""; // выводим на экран текущий вариант файла
}
?>
</textarea>
<br>
<input type=submit name="submit" value="Enter">
</form>
</body>
</html>
После ввода информации в файл в виде, получаем:
50
Ларнака
http://weather.yahoo.com/forecast/Larnaca_CY_f.html
51
Пафос
http://weather.yahoo.com/forecast/Paphos_CY_f.html
"44" - номер города.
"Ларнака" - название города.
"http://weather.yahoo.com/forecast/Larnaca_CY_f.html" - ссылка на погоду в городе Ларнака на Яхе.
Ссылки на города организовываются по принципу:
<a href=#>пример:
А можно так:
<a href=#>
Но если город из друх слов, то в пробелах пишем "%20"
В таком случае, номера городов в списке не нужны:
Ларнака
http://weather.yahoo.com/forecast/Larnaca_CY_f.html
Пафос
http://weather.yahoo.com/forecast/Paphos_CY_f.html
Если у нас не текстовый файл, а mysql, то все проще.
Если кому понадобится вариант с mysql, пишите мне totoeval@mtu-net.ru
2. Программа (собственно, адаптер Адаптер (англ.adapter, от лат.adapto— приспособляю)— приспособление, устройство или деталь, предназначенные для соединения устройств, не имеющих иного совместимого способа соединения. чужого кода к Вашему сайту).
<table width=100% border=0 cellspacing=0 cellpadding=2 bgcolor=<? echo $brdcolor; ?>>
<tr>
<td>
<br>
<!----- FORECAST ------->
<?php
$ini=$DOCUMENT_ROOT.'/weather/weather.ini';
$region=file($ini); // читаем файл со списком городов-ссылок а массив $region
// определение координат искомого города
for ($i=0; $i<sizeof($region); $i++) {
if (trim($region[$i])==$weather) { // ищем номер города в списке
$city=trim($region[$i+1]); // название города
$adr=trim($region[$i+2]); // адрес страницы
}
else {
}
}
// если у нас передается информация не номером города, а названием, то:
for ($i=0; $i<sizeof($region); $i++) {
$city=str_replace($city,"%20"," "); // заменяем "%20" на " "
if (trim($region[$i])==$city) { // ищем название города в списке
$adr=trim($region[$i+1]); // адрес страницы
}
else {
}
}
// Входная информация для дальнейшего кода - $adr
(адрес страницы прогноза погоды для города на сайте
http://weather.yahoo.com) и $city - название города на родном языке.
//
// фразы для поиска полезной информации. Оригинал фраз можно
обнаружить на странице, например, этой, проанализировав код.
// здесь заводим в переменные фразы, по которым будем искать
нужную информацию (градусы, описания погоды, картинки).
Используем фразы до и после необходимой информации.
Этот блок в будущем придется изменять, когда на оригинале
(weather.yahoo.com) изменится код страниц. На 14 авг. 2001 он работает.
$begin_screen='FORECAST ----'; // начальная фраза таблицы с прогнозом погоды
$end_screen='</b></td></tr></table></td></tr></table>';
// последняя фраза таблицы
$post_gradus='</font></b><'; // после градусов
$before_gradus='<font size="3" face="arial">'; // перед градусами
$before_image='http://us.i1.yimg.com/us.yimg.com/i/we/fc/'; // перед картинкой
$post_image='.gif'; // после картинки
$before_forecast='top><font face="arial" size="2">'; // перед фразой погоды
$post_forecast='</font></td><td>'; // после фразы погоды
// массивы для переводов даты и описаний погоды с английского языка на родной
(в данном случае использован вариант перевода с буржуйского на язык,
которым разговаривал Ленин.
$endat=array(" ","Mon","Tue","Wed","Thu","Fri","Sat","Sun",
"May","Jul","Jun","Aug","Sep","Oct","Nov","Dec","Jan","Feb","Mar","Apr");
// английские даты
$rudat=array(" ","понедельник","вторник","среда","четверг","пятница",
"суббота","воскресенье","мая","июля","июня","августа","сентября","октября",
"ноября","декабря","января","февраля","марта","апреля"); // родные даты
$eng=array(" ","Thunderstorms","Sunny","Partly Cloudy","Showers","Rain",
"Mostly Cloudy","Tstorms","Drizzle","Cloudy","Flurries","Fog","High",
"Low","Clear","Sleet","Rain/snow","Snow Showers","Mixed Snow", "Rain",
"Snow","Mixed"); // английские описания погоды
$rus=array(" ","гроза","ясно","переменная облачность","ливень","дожди",
"облачно","гроза","изморось","пасмурно","снегопад","туман","день","ночь",
"ясно","дождь со снегом","дождь со снегом","мокрый снег","снег с дождем",
"снег","переменно"); // российские аналоги погоды
$brdcolor='#ffffff'; // цвет рамки таблицы прогноз Прогноз (от греч. — предвидение, предсказание)— предсказание будущего с помощью научных методов, а также сам результат предсказания.а (белый)
$bgcolor='#eeeeee'; //цвет фона ячеек таблицы (лучше - цвет фона страницы)
// А Здесь начинается код программы, который изменять не придется.
// занимаемся созданием даты, выводимой на экран.
Функция time() даст нам текущее время. Функцией date(d." ".M,$t[$i])
получаем дату текущего и последующих 4 дней, а date(D,$t[$i]) дает нам
дни недели всех 5 дней. А затем переводим даты с английского языка на родной.
$t=array(4);
$d=array(4);
$dn=array(4);
for ($i=0; $i<=4; $i++) {
$t[$i]=time()+$i*86400;
$d[$i]=date(d." ".M,$t[$i]);
$dn[$i]=date(D,$t[$i]);
for ($j=0; $j<sizeof($endat); $j++) { // переводим слова в дате
и получаем даты на родном языке
$d[$i]=str_replace($endat[$j],$rudat[$j],$d[$i]);
$dn[$i]=str_replace($endat[$j],$rudat[$j],$dn[$i]);
} // и получаем даты на языке, которым разговаривает наш нонешний Вова
}
// начинаем обрабатывать страницу.
// Выясняем строки начала и конца таблицы с прогнозом погоды.
Затем, будем работать именно с этим блоком.
$screen=file($adr); // читаем страницу с прогнозом погоды в переменную $screen
for ($i=1; $i<sizeof($screen); $i++) {
// обрабатываем строки с первой по последнюю
if (strpos($screen[$i],$begin_screen)==false) {
//находим начало таблицы с прогнозом
if (strpos($screen[$i],$end_screen)==false) {
//находим ее конец
}
else {$m=$i; // $m - номер последней строки таблицы
}
}
else {$k=$i; // $k - номер первой строки таблицы
}
} // Получаем с $screen[$k] по $screen[$m] - нашу таблицу с погодой.
Потом будемработать именно с ней, чтобы не было лишних совпадений, и
быстро работала программа Программа - (от греч. — пред, греч. — запись) термин, в переводе означающий «предписание», т.е..
// Можно ее выводить в "родном дизайн Дизайн (англ.design инженер-конструктор, от лат.designare отмерять)— это творческая деятельность, целью которой является определение формальных качеств промышленных изделий. Эти качества включают и внешние черты изделия, но главным образом те структурные и функциональные взаимосвязи, которые превращают изделие в единое целое как с точки зрения потребителя, так и с точки зрения изготовителя. Дизайн стремится охватить все аспекты окружающей человека среды, которая обусловлена промышленным производством.е, но нам это не нравится
// Начинаем искать полезную информацию.
$grad=array(9); // массив из 10 чисел градусов температуры окружающей среды
$zed=0; // счетчик градусов
for ($i=$k; $i<=$m; $i++) { //работаем с градусами
if (strpos($screen[$i],$before_gradus,0)==false) {
//если нет градусов в строке (если нет фразы, стоящей перед градусами.
}
else {// если есть градусы в строке
$string_grad=$screen[$i]; // сохраняем строку с градусами в переменную
$string_grad=explode($before_gradus,$string_grad);
// разбиваем строку на массив строк по разделителю, которым является фраза
перед градусами, таким образом, мы получаем в 1 элементе
массива строку, которая начинается собственно с самого градуса погоды.
$end_grad=strpos($string_grad[1],$post_gradus,0);
// определяем позицию начала фразы, идущей после градуса.
$grad[$zed]=substr($string_grad[1],0,$end_grad);
// первый градус получаем, как подстрока, с 0-го символа до начала
фразы после градуса.
$zed++; // инкремент счетчика градусов
$end_grad=strpos($string_grad[2],$post_gradus,0);
$grad[$zed]=substr($string_grad[2],0,$end_grad); // второй градус
$zed++; // инкремент счетчика градусов
}
} // в результате чего, мы получили все градусы на нашей странице
// переводим фаренгейты в цельсии
for ($i=0; $i<=9; $i++) {$grad[$i]=round(5/9*($grad[$i]-32));
}
// в вариант Вариант (фр.variante, от лат.varians, родительный падеж variantis — меняющий, изменяющийся) — одна из нескольких редакций какого-либо произведения (литературного, музыкального и т. п.) или официального документа; видоизменение какой-либо части произведения (разночтения отдельных слов, строк, строф, глав).е с забиранием информации со страницы с цельсиями
// эту строку стоит просто закомментировать. Я оставил так, просто каприз.
// переводим фаренгейты в цельсии
// находим слова погоды абсолютно Абсолютный (лат.absolutus — законченный, неограниченный, безусловный, совершенный) — абсолютный означает то, что рассматривается само по себе, без отношения к чему-либо другому, противопоставляется относительному. аналогично поиску градусов
$zed=0; // счетчик описаний погоды
for ($i=$k; $i<=$m; $i++) { //работаем с описаниями
if (strpos($screen[$i],$before_forecast,0)==false) {
//если нет описания погоды в строке
}
else {// если есть описания в строке
$string_grad=$screen[$i]; // сохраняем строку с описаниями в переменную
$string_grad=explode($before_forecast,$string_grad);
$end_grad=strpos($string_grad[1],$post_forecast,0);
$forec[$zed]=substr($string_grad[1],0,$end_grad);
for ($j=0; $j<sizeof($eng); $j++) { // перебираем все варианты Вариант (фр.variante, от лат.varians, родительный падеж variantis — меняющий, изменяющийся) — одна из нескольких редакций какого-либо произведения (литературного, музыкального и т. п.) или официального документа; видоизменение какой-либо части произведения (разночтения отдельных слов, строк, строф, глав).
слов в описаниях
$forec[$zed]=str_replace($eng[$j],$rus[$j],$forec[$zed]); // переводим слова
}
$zed++; // инкремент Инкремент— следующий базовый элемент. (Это не +1) Это именно СЛЕДУЮЩИЙ базовый элемент. счетчика описаний
}
} // в результате чего, мы получили все описания погоды на нашей странице
$zed=0; // счетчик слов картинок аналоги Аналогия (др.-греч. — соответствие, сходство)— подобие, равенство отношений; сходство предметов (явлений, процессов) в каких-либо свойствах, а также познание путём сравнения. Между сравниваемыми вещами должно иметься как различие, так и подобие; то, что является основой сравнения (см. Tertium comparationis), должно быть более знакомым, чем то, что подлежит сравнению. Различие и подобие вещей должны существовать в единстве (метафизическая аналогия) или по крайней мере не должны быть разделяемы (физическая аналогия). В т.н. атрибутивной аналогии то, что является основанием подобия двух вещей, переносится с первого члена аналогии на второй (когда, напр., по аналогии с человеческим телом поступки, поведение человека рассматривают как «здоровые»). В т.н. пропорциональной аналогии каждый из членов аналогии содержит нечто, в чём он в одно и то же время подобен и не подобен другому (см. Analogia entis).чно
for ($i=$k; $i<$m; $i++) { //работаем с картинками
if (strpos($screen[$i],$before_image,0)==false) {
//если нет описания погоды в строке
}
else {// если есть картинки в строке
$string_grad=$screen[$i]; // сохраняем строку с картинками в переменную
$string_grad=explode($before_image,$string_grad);
$end_grad=strpos($string_grad[1],$post_image,0);
$for_img[$zed]=substr($string_grad[1],0,$end_grad);
$zed++; // инкремент счетчика картинок
}
} // в результате чего, мы получили все картинки на нашей странице
?>
// публикуем результаты:
<table width=100% cellpadding=0 cellspacing=0 border=0>
<tr><td width=20% align=center><font size=3><b
><? echo $city; // выводим название города, для которого
отображается прогноз погоды
?></b><br></font></td></tr></table
><table width=100% cellpadding=0 cellspacing=0 border=0>
<tr><?
for ($i=0; $i<=4; $i++) { // выводим на экран ячейки с датами и днями
echo "<td width=20% align=center><font size=2><b>
$d[$i]<br>$dn[$i]</b></font></td>";
}
?></tr
></table
><table width=100% cellpadding=0 cellspacing=0 border=0 bgcolor=<?
echo $brdcolor; ?>
><tr><td
><table width=100% cellpadding=2 cellspacing=1 border=0
><tr><?
$zed=0; // счетчик выводимых градусов
for ($i=0; $i<=4; $i++) { // выводим ячейки с прогнозами - картинки, градусы, описания
$zed1=$zed+1;
echo "<td width=20% align=center bgcolor=$bgcolor
valign=middle><img src=../pic/".$for_img[$i].".gif border=0
alt=".$forec[$i]."><br><br><
font size=2>".$forec[$i]."</font><br><br><
font size=3><b>".$grad[$zed]."°C<br>".$grad[$zed1]."°C</b>
</font></td>";
$zed=$zed+2;
}
?>
</tr></table>
// картинки можно привязать к картинкам Яхи
(названия аналогичных по погоде совпадают, как в моем случае),
а можно сделать массивы соответствия слов-описаний погоды и Ваших картинок.
Это по-желанию. Что долговечнее, трудно судить. И фразы-описания они могут
изменить, и картинки переименовать. Можно, конечно договориться с админом Яхи,
чтобы они не меняли один из этих элементов и отталкиваться от него, но у меня
не было его телефона:о)
</td>
</tr>
</table>
Теперь программа работает, и ее можно вставлять в свой дизайн. Вот вариант: вышеупомянутая Ларнака
Если кого заинтересуют "вариации на тему" или возникнут вопросы, прошу писать мне totoeval@mtu-net.ru. А также, пишите все, кто сможет посоветовать другие варианты. Всегда рад критике и возможности повысить свой уровень.
Вопросы и ответы
Вопрос 1. Как вставить картинки?
Ответ: Если хотите скачать номера картинок на яхе, создайте такую страницу со
скриптом:
for ($i=0; $i<100; $i++) {
echo $i.' - <img
src=http://us.i1.yimg.com/us.yimg.com/i/we/fc/'.$i.'.gif';
}
У Вас будут на экране все картинки, используемые Яхом. Если хотите, используйте их. Если нет, то сделайте свои и назовите соответственно оригиналам. Картинки размещаются (в моем варианте) по пути ../pic/ от Вашего скрипта. Если не нравится - замените путь на свой.
Вопрос Вопрос— форма мысли, выраженная в языке предложением, которое произносят или пишут, когда хотят что-нибудь спросить, то есть узнать какую-то информацию. Если вопрос произносят, то используют вопросительную интонацию, а если пишут, то в конце ставят вопросительный знак. Задающий вопрос обычно ожидает ответ. Исключение составляет риторический вопрос, на который ответ не требуется. 2. Можно ли сделать этот скрипт с mysql?
Ответ: Конечно можно. Позднее Позднее (укр. Пізнє) — село в Козелецком районе Черниговской области Украины. Население 25 человек. Занимает площадь 0,203 км. напишу вариант. А пока принцип для тех, кто хочет сам попробовать:
Надо создать таблицу. поля таблицы:
- страна
- город
- номер города
- ссылка на его погоду
При работе программ, вместо поиска в файле, делать запросы в базу по
этим полям.
Вопрос 3. Почему у меня ошибка Ошибка— несоответствие между объектом или явлением, принятым за эталон (материальный объект, решение задачи, действие, которое привело бы к желаемому результату), и объектом/явлением, сопоставленным первому. (завел все на локальном апаче. инет выделенный.):
Warning: file("") - No error in f:/home/islam/www/weather/weather.php on line 78
(строка $screen=file($adr); // читаем страницу с прогнозом погоды в
переменную $screen)?
Ответ: Ошибка связана с настройками апача.
Видимо, не считывает содержимое файла страницы на Яхе.
|