Скрипт прогноза погоды

Тема в разделе "Не достойно креатива", создана пользователем maximus, 24 апр 2007.

Статус темы:
Закрыта.
  1. maximus

    maximus Постоялец

    Регистр.:
    23 мар 2007
    Сообщения:
    83
    Симпатии:
    42
    Ниже скрипт прогноза погоды, берущий данные с Aport.ru:

    PHP:
    <?
    switch (
    $_REQUEST[city]){
     case 
    'spb'            $get='auto/26063/Sanktpeterburg.htm';    break;
     case 
    'tosno'            $get='auto/26078/Tosno.htm';        break; 
     default            : 
    $get='auto/26063/Sanktpeterburg.htm'; break;
    }

            if (
    fsockopen('weather.aport.ru'80)){
            
    $f=fsockopen('weather.aport.ru'80);

            
    $headers "GET /$get HTTP/1.0\r\n";
            
    $headers .= "Host: weather.aport.ru\r\n";
            
    $headers .= "User-Agent: Opera/9.10 (Windows NT 5.1; U; ru)\r\n";
            
    $headers .= "Connection: Close\r\n\r\n";
            
    fwrite($f$headers);

            
    $flag=false;
            
    $res="";
            
    $headers="";
            while (!
    feof($f))
        {
             
    $line fgets($f);
             if (!
    $flag$headers.= $line;
             else if (
    $flag$res.= $line;
             if(!
    trim($line)) $flag true;
        }

            
    fclose($f);

            
    preg_match_all('!<h1>.*?</h1>!si',$res,$city_name);
            
    $city_name=preg_replace('!<h1>(.*?)</h1>!si','\\1',$city_name[0][0]);
            
    $city_name=str_replace("(Ленингр.)","",$city_name);

            
    preg_match_all("!<h1>.*?</div>!si",$res,$res);
            
    $res=$res[0][0];
            
    $res preg_replace('|<script.*>.*</script>|Usi'''$res);
            
    $res preg_replace('|<td class="another">.*</table>|Usi'''$res);
            
    $res=str_replace("<noscript>","",$res);
            
    $res=str_replace("</noscript>","",$res);
            
    $res=str_replace("</h1></td>","</h1>",$res);
            
    $res=str_replace("(Ленингр.)","",$res);
            
    $res=str_replace("<img src=\"","<img src=\"http://liveinternet.ru/click?http://weather.aport.ru",$res);

            
    //echo $res;
        
    }
    else
        {
            
    $error='Прогноз погоды временно недоступен';
        }
    ?>
    <title>Погода в <?=$city_name;?></title>
    <style type="text/css"><!--
    body, td, th { font: 11px Tahoma }
    a    { font: 11px Tahoma; color: #006cd9; text-decoration: none }
    a:hover    { font: 11px Tahoma; color: #CC0000; text-decoration: underline }
    --></style>
    <link rel="stylesheet" href="http://weather.aport.ru/templates/css/weather.css" type="text/css">
    <table width="100%" cellpadding="8">
      <tr>
        <td width="20%" valign="top">
    <b>Выберите город:</b><br>
    <br>
    <a href="?city=spb">Санкт-Петербург</a><br> 
    <a href="?city=tosno">Тосно</a><br> 
    <p>&nbsp;</p></td>
        <td width="80%" valign="top"><?=$res;?><?=$error;?></td>
      </tr>
    </table>
    Пример обращения: /?city=tosno
     
    fte, irk, deddimych и 10 другим нравится это.
  2. ig0r

    ig0r Прохожие

    Еще бы научится на другие города настраиыать..
     
  3. Xansen

    Xansen

    Регистр.:
    30 мар 2006
    Сообщения:
    443
    Симпатии:
    119
    Написано же - пример обращения:
    /?city=tosno
    вместо tosno пишешь нужный тебе город(в транслите как на aport.ru) и будет тебе счастье!
     
  4. simbion

    simbion Постоялец

    Регистр.:
    5 апр 2006
    Сообщения:
    59
    Симпатии:
    1
    Выдало:
    Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\AppServ\www\pogoda.php on line 8

    Warning: fsockopen() [function.fsockopen]: unable to connect to weather.aport.ru:80 (Unknown error) in C:\AppServ\www\pogoda.php on line 8Выберите город:

    Санкт-Петербург
    Тосно
     
  5. bestman

    bestman Прохожие

    Странно, у меня все работает...
     
  6. maximus

    maximus Постоялец

    Регистр.:
    23 мар 2007
    Сообщения:
    83
    Симпатии:
    42
    Если выдаёт такую ошибку, то следует заменить на:

    Код:
    if (fsockopen('194.67.1.14', 80)){
    		$f=fsockopen('194.67.1.14', 80);
     
  7. ghost3k

    ghost3k Постоялец

    Регистр.:
    5 фев 2007
    Сообщения:
    102
    Симпатии:
    31
    А это дело можно в Joomla как то встроить... ну в смысле в тот же материал/статью любой?
     
  8. banner

    banner Прохожие

    Я

    Круто, а там трудно устанавливать

    Добавлено через 17 минут
    всё я разобраля, спасибо, вы гении
     
  9. Xansen

    Xansen

    Регистр.:
    30 мар 2006
    Сообщения:
    443
    Симпатии:
    119
    а можно как нибудь выводить только нужную информацию, а не полностью копию страницы апорта?
     
  10. mixamixa

    mixamixa Постоялец

    Регистр.:
    9 янв 2007
    Сообщения:
    61
    Симпатии:
    13
    Парсер еще требует доработки))
     
    Rockboy нравится это.
Статус темы:
Закрыта.