Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+curl] Podmiana danych - problem
Forum PHP.pl > Forum > Przedszkole
roobik
Witam!
Jestem w trakcie przerabiania skryptu pogody z wp i utknąłem w miejscu. Do rzeczy więc. Patrzę w źródło pogody na wp:
  1. <td width="25%" style="border-right:3px solid #fff;"><div class="box3Hd">Sobota</div>
  2. <div class="box3Txt"><div style="height:54px;"><img src="http://i.wp.pl/a/i/pogoda2/weather_pict06/cloud5.png" width="54" height="54" alt="Pochmurno" border="0" align="left"><div style="font-size:10px">Pochmurno ale bez opadów.</div></div>
  3. <div style="padding:5px;"><br class="b5"/>temp. max: <strong>19°C</strong><br />temp. min: <strong>8°C</strong></div>
  4. <div style="padding:5px; padding-top:0;">wiatr:<br/> pół-zach. <strong>7.2 km/h</strong></div>
  5.  
  6. </div>
  7.  
  8. </td>
  9. <td width="25%" style="border-right:3px solid #fff;"><div class="box3Hd">Niedziela</div>
  10. <div class="box3Txt"><div style="height:54px;"><img src="http://i.wp.pl/a/i/pogoda2/weather_pict06/sun4.png" width="54" height="54" alt="Zmienne zachmurzenie - deszcz" border="0" align="left"><div style="font-size:10px">Zachmurzenie zmienne i czasami ulewy.</div></div>
  11. <div style="padding:5px;"><br class="b5"/>temp. max: <strong>18°C</strong><br />temp. min: <strong>7°C</strong></div>
  12. <div style="padding:5px; padding-top:0;">wiatr:<br/> północny <strong>10.8 km/h</strong></div>
  13.  
  14. </div>
  15.  
  16. </td>
  17. <td width="25%" style="border-right:3px solid #fff;"><div class="box3Hd">Poniedziałek</div>
  18. <div class="box3Txt"><div style="height:54px;"><img src="http://i.wp.pl/a/i/pogoda2/weather_pict06/sun2.png" width="54" height="54" alt="Zmienne zachmurzenie" border="0" align="left"><div style="font-size:10px">Częściowe zachmurzenie i bez opadów.</div></div>
  19. <div style="padding:5px;"><br class="b5"/>temp. max: <strong>20°C</strong><br />temp. min: <strong>8°C</strong></div>
  20. <div style="padding:5px; padding-top:0;">wiatr:<br/> północny <strong>18 km/h</strong></div>
  21.  
  22. </div>
  23.  
  24. </td>
  25. <td width="25%" style="border-right:3px solid #fff;"><div class="box3Hd">Wtorek</div>
  26. <div class="box3Txt"><div style="height:54px;"><img src="http://i.wp.pl/a/i/pogoda2/weather_pict06/sun1.png" width="54" height="54" alt="Bezchmurnie" border="0" align="left"><div style="font-size:10px">Przeważnie słonecznie i bez opadów.</div></div>
  27. <div style="padding:5px;"><br class="b5"/>temp. max: <strong>20°C</strong><br />temp. min: <strong>8°C</strong></div>
  28. <div style="padding:5px; padding-top:0;">wiatr:<br/> pół-wsch. <strong>10.8 km/h</strong></div>
  29.  
  30. </div>
  31.  
  32. </td>

Chcę wyciągnąć tylko tzw "chmurki" z kolejnych dni (sobota, niedziela, pojniedziałek i wtorek).
Zrobiłem coś takiego:
  1. <?php
  2. $site = file_get_contents("http://pogoda.wp.pl/miasto,wroclaw,mid,1201305,mi.html");
  3. preg_match('/http://i.wp.pl/a/i/pogoda2/weather_pict06/([a-zA-z0-9]+).png/',$site,$icon);
  4. .
  5. .
  6. // chmurka "jutro"
  7. preg_match('/<div class=\"chmurka\">([^<]*)width/',$site,$icon2);
  8.  
  9. // chmurka "pojutrze"
  10. preg_match_all('/<div style=\"height:54px;\">([^<]*)/',$site,$icon3); //obrazek pojutrze!!!!!!!!
  11.  
  12.  
  13. // chmurka popojutrze
  14. preg_match_all('/<div style=\"height:54px;\">([^<]*)/',$site,$icon4); //obrazek pojutrze!!!!!!!!
  15. .
  16. .
  17. echo 'icon: '.$icon[1].'<br>';//tu się pokazuje sam napis dsun3
  18. echo 'icon[0]: '.$icon[0].'<br>';//adres
  19. echo 'icon[0]: '.$icon[0].'<br>';//adres
  20. echo 'icon[0]: '.$icon[0].'<br>';//adres
  21. .
  22. .
  23. ?>

(tam gdzie pisałem //adres to pokazuje http://i.wp.pl/a/i/pogoda2/weather_pict06/dsun3.png, a jak dam zamiast powyższego
echo 'icon3: '.$icon3[0].'<br>';
echo 'icon3: '.$icon3[1].'<br>';
to wyskakuje mi array sad.gif
zamiarem moim jest, by na podst "chmurek" z wp obrazki byłyby pobierane z mojego serwera.
Sory za przydługiego posta - ale inaczej nie dałoby rady....
Pomóżcie plis...
Wicepsik
  1. <?php
  2. $site = file_get_contents("http://pogoda.wp.pl/miasto,wroclaw,mid,1201305,mi.html");
  3. preg_match_all('/http://i.wp.pl/a/i/pogoda2/weather_pict06/([a-zA-z0-9]+).png/',$site,$icon);
  4.  
  5. echo '<pre>';
  6. print_r($icon);
  7. ?>



  1. <?php
  2. [1] => Array
  3.        (
  4.            [0] => dsun3    // dzis
  5.            [1] => cloud5   // jutro
  6.            [2] => sun4      // pojutrze
  7.            [3] => sun2      //popojutrze
  8.            [4] => sun1
  9.            [5] => ar_se
  10.            [6] => ar_se
  11.            [7] => ar_se
  12.            [8] => ar_se
  13.            [9] => ar_n
  14.            [10] => ar_se
  15.            [11] => ar_s
  16.            [12] => ar_s
  17.            [13] => ar_se
  18.            [14] => ar_se
  19.            [15] => ar_s
  20.            [16] => ar_s
  21.            [17] => ar_sw
  22.            [18] => ar_s
  23.            [19] => ar_s
  24.            [20] => ar_s
  25.            [21] => ar_s
  26.        )
  27. ?>
roobik
Rczej nie o to chodziło :|
Z tego, co mi się wydaje, to zostały tu "na sztywno" przypisane "chmurki" do dni ....ale niestety tak nie jest - bo jutro będą inne "chmurki"
Skoro mamy tabelę, a w niej cztery kolumny - to może lepszym rozwiązaniem byłaby pętla?
Lecz tu niestety, ale polegnę - dlatego może jakieś inne rozwiązanie komuś wpadnie do głowy?

ps. Wicepsik -> dzięki.... przyda mi się do innego "projektu" winksmiley.jpg
Wicepsik
Cytat(roobik @ 19.06.2009, 14:34:44 ) *
Rczej nie o to chodziło :|
Z tego, co mi się wydaje, to zostały tu "na sztywno" przypisane "chmurki" do dni ....ale niestety tak nie jest - bo jutro będą inne "chmurki"
Skoro mamy tabelę, a w niej cztery kolumny - to może lepszym rozwiązaniem byłaby pętla?
Lecz tu niestety, ale polegnę - dlatego może jakieś inne rozwiązanie komuś wpadnie do głowy?

ps. Wicepsik -> dzięki.... przyda mi się do innego "projektu" winksmiley.jpg

Przecież jak jutro będą inne chmurki to w tabeli też będą inne? Bo to jest ściągane ze strony...
roobik
...w którym miejscu mam wstawić tę tablicę? Bo albo coś pochrzaniłem, albo.... coś pochrzaniłem smile.gif
A tak poważniej:
mam przygotowaną tabelę z czterema wierszami - pytanie jest więc takie: na podst powyższego kodu (tego, co napisałem) w jaki sposób wyświetlić te "chmurki"?
  1. <?php
  2. <table>
  3. <tr><td>chmurka na jutro</td> </tr>
  4. <tr><td>chmurka na pojutrze</td> </tr>
  5. <tr><td>chmurka na popojutrze</td> </tr>
  6. <tr><td>chmurka na popopojutrze</td> </tr>
  7. </table>';
  8. ?>
Wicepsik
  1. <?php
  2. <table>
  3. <tr><td>chmurka na jutro</td><td>'.$icon[1][0].'</td></tr>
  4. <tr><td>chmurka na pojutrze</td><td>'.$icon[1][1].'</td> </tr>
  5. <tr><td>chmurka na popojutrze</td><td>'.$icon[1][2].'</td></tr>
  6. <tr><td>chmurka na popopojutrze</td><td>'.$icon[1][3].'</td></tr>
  7. </table>';
  8. ?>



  1. <?php
  2. print_r($icon);
  3. ?>


Zobacz sobie tak i tam jest wszystko wypisane, jest to tablica wielowymiarowa.
Wicepsik
Nazwij obrazki tak jak na wp.

  1. <?php
  2. echo '<img src="folder/'.$icon[1][0].'.png">';
  3. ?>
roobik
[quote=WicepsikśNazwij obrazki tak jak na wp[/quote]
Mam idealnie takie same nazwy, co na wp. Lecz nie chodzi tu o nazwy plików.
Zobacz tak:
Jeśli daję kod
  1. <?php
  2. echo '<img src="gfx/'.$icon[1].'.png" width=15 height=15>';
  3. ?>

To w efekcie widzę chmurkę, lecz nie tą co trzeba. Prawdopodobnie skopane jest "wycinanie" danych, czyli ten kawałek:
  1. <?php
  2. preg_match_all('/http://i.wp.pl/a/i/pogoda2/weather_pict06/([a-zA-z0-9]+).png/',$site,$icon);
  3. ?>

Dlatego dałem źródło z wp. Wszystkie dane są tam w tabeli, która jest podzielona na 4 kolumny. Wiem, że nie jest istotne, czy wyświetlę je w pionie, czy w poziomie - chodzi o to, by:
do zmiennej $icon przypisać chmurkę "na jutro"
do zmiennej $icon2 "na pojutrze"
do zmiennej $icon3 "na popojutrze"
do $icon4 "na popopojutrze"
- i to chodzi, żeby tylko wycinanie zmienić.... z resztą dam radę winksmiley.jpg
Dokładniej wyjaśnić nie potrafię... sad.gif
Wicepsik
Zmienne $icon3 i $icon4 pobierają pierwszy wynik z kodu więc są takie same. Po co coś takiego robisz? Dałem Ci kod który będzie pasować a ty robisz na około...
roobik
Zrobiłem, jak podałeś - niestety, ale jest inaczej niż zamysł.
pogoda.wp.pl/miasto,wroclaw,mid,1201305,mi.html
Pod tym adresem jest to, co mnie interesuje - "Prognoza ogólna", w której są (na dzień dzisiejszy) dane na sobotę, niedzielę, poniedziałek i wtorek.
Robiąc tak:
  1. <?php
  2. $site = file_get_contents("http://pogoda.wp.pl/miasto,wroclaw,mid,1201305,mi.html");
  3. preg_match_all('/http://i.wp.pl/a/i/pogoda2/weather_pict06/([a-zA-z0-9]+).png/',$site,$icon);
  4.  
  5. echo '<pre>';
  6. print_r($icon);
  7.  
  8.  
  9. <table border=1>
  10. <tr><td>chmurka na jutro</td><td>'.$icon[1][0].'</td></tr>
  11. <tr><td>chmurka na pojutrze</td><td>'.$icon[1][1].'</td> </tr>
  12. <tr><td>chmurka na popojutrze</td><td>'.$icon[1][2].'</td></tr>
  13. <tr><td>chmurka na popopojutrze</td><td>'.$icon[1][3].'</td></tr>
  14. </table>';
  15.  
  16. echo '<table border=2><tr><td>';
  17. $site = file_get_contents("http://pogoda.wp.pl/miasto,wroclaw,mid,1201305,mi.html");
  18. preg_match('/http://i.wp.pl/a/i/pogoda2/weather_pict06/([a-zA-z0-9]+).png/',$site,$icon);
  19.  
  20. // chmurka "jutro"
  21. preg_match('/<div class=\"chmurka\">([^<]*)width/',$site,$icon2);
  22.  
  23. // chmurka "pojutrze"
  24. preg_match_all('/<div style=\"height:54px;\">([^<]*)/',$site,$icon3);
  25.  
  26.  
  27. // chmurka popojutrze
  28. preg_match_all('/<div style=\"height:54px;\">([^<]*)/',$site,$icon4);
  29.  
  30. echo 'icon: '.$icon[1][0].'<br>';//tu się pokazuje sam napis dsun3
  31. echo 'icon[0]: '.$icon[2][0].'<br>';//adres
  32. echo 'icon[0]: '.$icon[3][0].'<br>';//adres
  33. echo 'icon[0]: '.$icon[4][0].'<br>';//adres
  34. echo 'więc biorąc icon: by bylo <img src="gfx/'.$icon[1].'.png" width=15 height=15>';
  35. echo '</td></tr></table>';
  36. ?>

wyszło nieporozumienie...
Pytanie jest więc dalej otwarte: w jaki sposób "wydobyć" te cztery chmurki, by dla każdego dnia była określona (nie przeze mnie, lecz przez wp) "chmurka"? Czyli jeszcze inaczej mówiąc:
echo 'SOBOTA: <img src="gfx/'.$icon[1][0].'.png" width=15 height=15><br>
NIEDZIELA: <img src="gfx/'.$icon[1][1].'.png" width=15 height=15><br>
PONIEDZIAŁEK: <img src="gfx/'.$icon[1][2].'.png" width=15 height=15><br>
WTOREK: <img src="gfx/'.$icon[1][3].'.png" width=15 height=15><br>
';
by to było dobrze wyświetlane - bo narazie nie jest.
Wicepsik
Nie wiem o co Ci w ogóle chodzi...


Ustaw nazwy obrazków tak jak na wp.pl

  1. <?php
  2. $site = file_get_contents("http://pogoda.wp.pl/miasto,wroclaw,mid,1201305,mi.html");
  3. preg_match_all('/http://i.wp.pl/a/i/pogoda2/weather_pict06/([a-zA-z0-9]+).png/',$site,$icon);
  4.  
  5. <table border=1>
  6. <tr><td>chmurka na jutro</td><td><img src="gfx/'.$icon[1][1].'"></td></tr>
  7. <tr><td>chmurka na pojutrze</td><td><img src="gfx/'.$icon[1][2].'"></td> </tr>
  8. <tr><td>chmurka na popojutrze</td><td><img src="gfx/'.$icon[1][3].'"></td></tr>
  9. <tr><td>chmurka na popopojutrze</td><td><img src="gfx/'.$icon[1][4].'"></td></tr>
  10. </table>';
  11. ?>
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-2025 Invision Power Services, Inc.