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


Посилання на міста організовуються за принципом:

<a href=http://www.sim-sim.ru/catalogue/weather.php?weather=50> Ларнака </ a>

А можна так:

<a href=http://www.sim-sim.ru/catalogue/weather.php?city=Ларнака> Ларнака </ a>

Але якщо місто з друх слів, то в прогалинах пишемо "% 20"

У такому випадку, номери міст у списку не потрібні:


Якщо у нас не текстовий файл, а mysql, то все простіше.

Якщо комусь знадобиться варіант з mysql, пишіть мені totoeval@mtu-net.ru

2. Програма (власне, адаптер чужого коду до Вашого сайту).

 <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] – нашу таблицю з погодою.
/ / Потім будемработать саме з нею, щоб не було зайвих збігів, і
/ / Швидко працювала програма.
/ / Можна її виводити в "рідному дизайні, але нам це не подобається
/ / Починаємо шукати корисну інформацію.

$ 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]; / / зберігаємо рядок з градусами в змінну
/ / Розбиваємо рядок на масив рядків по роздільника, яким
/ / Є фраза перед градусами, таким чином, ми отримуємо в
/ / 1 елементі масиву рядок, яка починається власне з
/ / Самого градуси погоди.
$string_grad=explode($before_gradus,$string_grad);
/ / Визначаємо позицію початку фрази, що йде після градуси.
$end_grad=strpos($string_grad[1],$post_gradus,0);
/ / Перший градус отримуємо, як підрядок, з 0-го символу до початку фрази після градуси.
$grad[$zed]=substr($string_grad[1],0,$end_grad);
$ 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));
}
/ / У варіанті з забиранням інформації зі сторінки з цельсія
/ / Цей рядок варто просто закоментувати. Я залишив так, просто каприз.
/ / Переводимо Фаренгейтом в Цільсій

/ / Знаходимо слова погоди абсолютно аналогічно пошуку градусів
$ 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++) {
/ / Переводимо слова
$forec[$zed]=str_replace($eng[$j],$rus[$j],$forec[$zed]);
}
$ Zed + +; / / інкремент лічильника описів
}
} / / Внаслідок чого, ми отримали всі описи погоди на нашій сторінці

$ Zed = 0; / / лічильник слів картинок аналогічно
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 = "http://www.ishodniki.ru/../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.

А також, пишіть всі, хто зможе порадити інші варіанти. Завжди радий
критиці і можливості підвищити свій рівень.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*