Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pogoda z WP.PL
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
Marcuez
Prosty skrypt po mojej modyfikacji.
wchodzisz na Pogoda.WP.pl, wybierasz swoje miasto i kopiujesz nr z linku.
  1. http://pogoda.wp.pl/miasto,bydgoszcz,mid,1201023,mi.html
<- przykład.
  1. <?php
  2. $url = 'http://pogoda.wp.pl/mi.html?mid=1201023';
  3. $link = curl_init($url);
  4. curl_setopt($link, CURLOPT_REFERER, 'http://pogoda.wp.pl');
  5. curl_setopt($link, CURLOPT_RETURNTRANSFER, TRUE);
  6. $wynik = curl_exec($link);
  7. curl_close($link);
  8. $start = strpos($wynik, '<div class="hdMain"', $wynik);
  9. $stop = strpos($wynik, '<br class="b5"/>', $wynik);
  10. $wynik = substr($wynik, $start, $stop-$start);
  11. $wynik = str_replace('<strong style="padding-left: 2px;">', '<strong>', $wynik);
  12. $dzien = trim(strip_tags(substr($wynik, 0, strpos($wynik, '</div>'))));
  13. $szukaj = array(
  14. '<strong>' => array(
  15. '</strong>',
  16. 'miasto',
  17. 'temp_max',
  18. 'temp_min',
  19. 'wiatr_szybkosc',
  20. 'wiatr_chlodzenie',
  21. 'wschod',
  22. 'zachod',
  23. ),
  24. '<div class="chmurka">' => array(
  25. '</div>',
  26. 'obrazek',
  27. ),
  28. '<div class="opis">' => array(
  29. '</div>',
  30. 'opis',
  31. ),
  32. '.gif" alt="' => array(
  33. '"',
  34. 'spacja',
  35. 'wiatr_kierunek',
  36. ),
  37. );
  38.  
  39. $dane = array();
  40.  
  41. foreach($szukaj as $patt => $info) {
  42. $stop = 0;
  43. $len = strlen($patt);
  44. for($i=0; $i < count($info)-1; $i++) {
  45. $start = strpos($wynik, $patt, $stop)+$len;
  46. $stop = strpos($wynik, $info[0], $start);
  47. $dane[ $info[$i+1] ] = trim(substr($wynik, $start, $stop-$start));
  48. }
  49. }
  50.  
  51. if($dane['temp_min'] == $dane['temp_max']) {
  52. $dane['temp'] = $dane['temp_min'];
  53. }
  54. else
  55. {
  56. $dane['temp'] = 'od '.$dane['temp_min'].' do '.$dane['temp_max'];
  57. }
  58. ?>
  59. <CENTER>
  60. <div style="width: 300px; background: #ffff99; text-align: left; color: #000; border: 1px solid #ff9900; padding: 5px; font-size: 12px; ">
  61. <html>
  62. <head>
  63. <base href="http://pogoda.wp.pl">
  64. <style type="text/css">
  65. body {
  66. font-family: Verdana, sans-serif;
  67. font-size: 10px;
  68. }
  69. h1 {
  70. font-size: 14px;
  71. font-weight: bold;
  72. }
  73. .sub {
  74. font-size: 13px;
  75. }
  76. </style>
  77. </head>
  78. <body>
  79. <?
  80. echo '<h1>'.$dzien.'.<br> Pogoda dla miejscowości '.strip_tags($dane['miasto']).'</h1><hr width="300px">
  81. <p>'.$dane['obrazek'].'</p>
  82.  
  83. <p><b>Temperatura:</b> '.$dane['temp'].'</p>
  84.  
  85. <p><b>Kierunek wiatru:</b> '.$dane['wiatr_kierunek'].'<br>
  86. <b>Szybkość wiatru:</b> '.$dane['wiatr_szybkosc'].'<br>
  87. <b>Czynnik chłodzący:</b> '.$dane['wiatr_chlodzenie'].'</p>
  88.  
  89. <p><b>Wschód słońca:</b> '.$dane['wschod'].'<br>
  90. <b>Zachód słońca:</b> '.$dane['zachod'].'</p>
  91. <hr width="300px">
  92. <div style="text-align: right;">Copyright &copy; by <b>Ayumi</b>.</div>
  93. </body>
  94. </html></div></center>';
  95. ?>

Wynik: http://graphic.org.pl/Untitled1.php

Pamiętaj: Musisz mieć zainstalowaną biblioteke cURL na serwerze.
Pawel_W
ehh, tyle niepotrzebnych rzeczy, zamiast wyrażeń regularnych winksmiley.jpg
thek
A sprawdził ktoś chociaż co na to regulamin wp.pl? Bo większość serwisów pogodowych ma klauzulę, że takie wykorzystywanie ich treści jest zabronione. Szukałem wzmianki na wp, ale nie znalazłem. Ja korzystam z innego, międzynarodowego (Weather Underground), ale ma ograniczoną liczbę stacji. Plusem jest to, że dane z nich dostaje się jako XML, więc obróbka to bajka :]
scanner
Bardzo brzydko zwracasz dane. Jeżeli chcesz, żeby Twoje rozwiązanie było wykorzystane, nie możesz pluć na sztywno html'em, tylko czyste dane zwracać w formie XML, tablicy, czy jakiejkolwiek innej łatwej do parsowania.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.