Przypuśćmy, że na naszej stronce (np. stronie miasta) chcemy mieć aktualną pogodę. Napiszemy sobie w takim razie prosty skrypt, który pobierać będzie aktualne wyniki.
Przejdźmy zatem do kodu...
Rozpoczynamy sesję cURL'a i konfigurujemy ją na nasze potrzeby oraz za pomocą parametru CURLOPT_RETURNTRANSFER ustawionego na 1 dane przesyłane od serwera wyświetlam za pomocą ciągu znaków:
<?php function pogoda($miasto) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://pogodnie.pl/show/city/".$miasto); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); } ?>Dodatkowo, aby nie zabić naszej stronki przez jeden prosty skrypt, ustawimy timeout dla połączenia curla na 15 sekund. Na koniec wywołujemy curla, wynik sesji zapisujemy w jakiejś zmiennej (w moim przypadku ta zmienna nazywa się $wynik) i zamykamy połączenie.
[/font] <?php function pogoda($miasto) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://pogodnie.pl/show/city/".$miasto); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 15); $wynik = curl_exec($curl); curl_close($curl); } ?>[font="Arial"]
Kolejnym zadaniem będzie analiza kodu strony pogodnie.pl (tak jak na poczatku napisałem kod
tej storny jest przejrzysty i łatwo odszukamy to czego potrzebujemy czyli aktualną pogodę.
<div class="livebox_box"> <div class="livebox_top"><div></div></div> <div class="livebox_content"> <h1>Grójec</h1> (Polska)<br/> <h2>TERAZ</h2> <img src="/images/slonce.png" width='100' height='125' border='0'><br /> <span class="lighter">Pochmurnie</s9°C</span><br /> Wiatr: <span class="stronger">23 km/h</span> </div> <div class="livebox_bottom"><div></div></div> </div>Teraz musimy wygrzebać z tego kodu to co nam naprawdę potrzebne:
<?php (?) $wynik = explode('<div class="livebox_top"><div></div></div>',$wynik); $wynik = $wynik[1]; $wynik = explode('<div class="livebox_bottom"><div></div></div>', $wynik); $wynik = $wynik[0]; (?) ?>Funkcja explode zwraca nasz łańcuch w postaci tablicy.
Rozbijamy łańcuch w miejscu, gdzie znajduje się
<div class="livebox_top"><div></div></div>Teraz do zmiennej $wynik przypisujemy kolejny element tablicy $wynik
i tak jak poprzednio na otrzymanym łańcuchu wywołujemy explode.
Tym razem do zmiennej $wynik zapisujemy łańcuch przed rozbiciem:
<div class="livebox_content"> <h1>Grójec</h1> (Polska)<br/> <h2>TERAZ</h2> <img src="/images/slonce.png" width='100' height='125' border='0'><br /> <span class="lighter">Pochmurnie</span><br /> Temperatura: <span class="stronger">9°C</span><br /> Wiatr: <span class="stronger">23 km/h</span></div>Następnie zmieniamy klasę boxa, w którym znajduje się pogoda i usuwamy zbędne fragmenty kodu. Wcześniej jednak usuwamy nazwę kraju (ponieważ nasza pogoda jest regionalna) i informacje o rozmiarach obrazka i zamkniemy tag. W końcu chcemy otrzymać poprawny kod xHTML 1.0 Strict. (rzadko się to zdarza w dzisiejszych czasach).
<?php function pogoda($miasto) { //inicjacja curla $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://pogodnie.pl/show/city/".$miasto); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 25); $wynik = curl_exec($curl); curl_close($curl); //Wyciąganie ze źródła potrzebnego kodu za pomocą fukcji explode(); $wynik = explode('<div class="livebox_top"><div></div></div>',$wynik); $wynik = $wynik[1]; $wynik = explode('<div class="livebox_bottom"><div></div></div>', $wynik); $wynik = $wynik[0]; //Rozpoczynanie formatowania $wynik = preg_replace('/<\/h1>(.*?)<h2>/si', '</h1><h2>', $wynik); $wynik = preg_replace("/width='(.*?)' height='(.*?)' border='(.*?)'/si", 'alt="" /', $wynik); $pattern[0] = 'livebox_content'; $pattern[1] = '<h2>TERAZ</h2>'; $replacement[0] = 'weather_box'; $replacement[1] = ''; $wynik = str_replace($pattern, $replacement, $wynik); //Zwracanie fragmentu po formatowaniu return($wynik); } echo pogoda('id'); ?>A w (x)html 1.0 Strick, który przechodzi spokojnie przez walidator to będzie:
<div class="weather_box"> <h1>Grójec</h1> <img src="/images/slonce.png" alt="" /><br /> <span class="lighter">Pochmurnie</span><br /> Temperatura: <span class="stronger">9°C</span><br /> Wiatr: <span class="stronger">23 km/h</span> </div>
Teraz musimy przygotować jeszcze potrzebne nam grafiki o nazwach:
-chmury.png
-deszcz-ze-sniegiem.png
-deszcz.png
-mzawka.png
-slonce-z-chmura.png
-slonce.png
-snieg.png
Uwaga! Nie zmieniajcie nazw tych plików, ponieważ z takich korzysta serwis pogodnie.pl
Teraz musimy jeszcze na stronie (tam gdzie chcemy mieć naszą pogodę) dodać:
<?php echo pogoda('id'); ?>Linijkę wyżej musieliśmy, a teraz możemy.. cieszyć się z wykonanej przez nas roboty (oczywiście może się nie podobać )
Jestem równiez pewien, że serwis pogodne byłby zadowolony gdybyśmy dodali gdzieś:
<a href="http://pogodnie.pl" title="Pogodnie.pl">Pogodnie.pl</a>Lub chociaż
<!-- <a href="http://pogodnie.pl" title="Pogodnie.pl">Pogodnie.pl</a> -->
Pamiętajcie... Waszym ograniczeniem jest tylko i wyłącznie wasza wyobraźnia