Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] pobieranie danych ze strony file_get_contents, zmiana kodowania
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Napisałem kod który pobiera dane z pewnej strony wszystko jest ok tylko że na stronie z której pobieram dane jest zwalone kodowanie "krzaczki są".
Czy mogę zmienić kodowanie z poziomu mojego skryptu?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://php.net/iconv
Go to the top of the page
+Quote Post
Lejto
post
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


ok tylko teraz jaki zestaw znaków, na stronie z której pobieram jest:
Kod
<meta http-equiv="Content-Type" content="text/html;>charset=ISO-8859-2" />

u mnie jest utf-8
i w iconv(); mam
  1. <?php
  2. echo iconv("ISO-8859-2","UTF-8", $pokaz[0]);
  3. ?>

i jest trochę lepiej
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A może sprecyzujesz sformułowanie "trochę lepiej"?
Go to the top of the page
+Quote Post
Lejto
post
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


ę, ń działa nie działa ś

to co robię źle?

hallo (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
nie da się w tym nic zrobić?
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zapodaj kod wszystkiego co tam masz.
Go to the top of the page
+Quote Post
Lejto
post
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


proszę bardzo:
  1. <?php
  2. $ch = curl_init("http://gimnowe.pl/index.php?option=com_content&task=view&id=149&Itemid=83");
  3. curl_setopt($ch, CURLOPT_USERAGENT, "Internet Explorer");
  4.  
  5.  
  6. curl_exec($ch);
  7. curl_close($ch);
  8.  
  9. $str = ob_get_contents();
  10.  
  11. preg_match("/<tbody><tr><td>(.*?)</td></tr>/is", $str, $byname);
  12. preg_match_all("/<tbody><tr><td>(.*?)</td></tr>/is",$byname[0], $data_z);
  13.  
  14.  
  15. $url = 'http://gimnowe.pl/index.php?option=com_content&task=view&id=149&Itemid=83';
  16. $za = file_get_contents($url);
  17.  
  18. preg_match('#<td class="contentheading" width="100%">(.*?)</td>#si', $za, $tyt);
  19. echo $tyt[0];
  20.  
  21.  
  22. $data = array();
  23. for($i = 0; $i < count ($data_z[1]); $i++)
  24. {
  25.    $zmiana = $data_z[1][$i];
  26.    $data []= array($zmiana);
  27. }
  28. foreach ($data as $pokaz)
  29. {
  30.    echo iconv("ISO-8859-2","UTF-8", $pokaz[0]);
  31. }
  32. ?>
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ech... Wystarczyło wejść na tą stronę i zobaczyć ze kodowanie jest zwalone. Ale widać jak mało ludzi wie o takiej opcji w przeglądarce (zestaw znaków). Zmien sobie na Windows-1250 (takie też ustaw w kodowaniu źródłowym iconv) i zobaczysz efekt.
Daj jeszcze iconv na tytuł...

Poza tym zastosowanie ob_start jest troche na okretke. Wystarczy dodac do curla opcje RETURNTRANSFER -> wiecej info w manualu

Ten post edytował wookieb 6.03.2009, 14:45:03
Go to the top of the page
+Quote Post
Lejto
post
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


wiem że jest kodowanie zwalone na tej stronie zobaczę z windows-1250

ok zrobiłem tak:
  1. <?php
  2. echo iconv("windows-1250","ISO-8859-2", $tyt[0]);
  3. ?>
i działa
ale jeszcze gdy przepuszczam to przez ajaxa i index.html to kodowanie znów się zwana a mam kodowanie ISO-8859-2 ;/
Go to the top of the page
+Quote Post
wookieb
post
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A sprawdź kodowanie swojego pliku php i kodowanie strony na ktorej to pokazujesz.
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #11





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


AJAX domyślnie bierze UTF-8. Może to jest powodem.
Go to the top of the page
+Quote Post
Lejto
post
Post #12





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


wszędzie dałem UTF-8 i działa jak powinno (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
a jest możliwość żeby przejść w ajaxsie na ISO-8859-2?

Ten post edytował Lejto 7.03.2009, 10:25:23
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #13





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


A stosujesz jakąś bibliotekę, czy goły XMLHttpRequest?
Go to the top of the page
+Quote Post
Lejto
post
Post #14





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


goły XMLHttpRequest bez biblioteki
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #15





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Próbowałeś może czegoś takiego:
Kod
xmlHttp.overrideMimeType('text/html; charset=windows-1250');

?
Go to the top of the page
+Quote Post
Lejto
post
Post #16





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


nie nie próbowałem, jak będzie potrzeba to zobaczę
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 14:44