Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML][PHP]Kodowanie XML, przepraszam, że po raz kolejny
djgarsi
post
Post #1





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Witam.
Walczę z kodem od rana na wszelkie sposoby i nie mogę sobie poradzić. Otóż pobieram kursy walut z NBP w XMLu i "próbuję" je jakoś obrobić.
Mój problem polega na tym że coś jest nie tak z kodowaniem. Różne znaki zapytania i inne krzaki pokazuje.

Mój kod:
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. if (!function_exists('curl_init')){
  5. die('Sorry cURL is not installed!');
  6. }
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, "http://www.nbp.pl/kursy/xml/LastA.xml");
  9. curl_setopt($ch, CURLOPT_REFERER, "http://www.example.org/yay.htm");
  10. curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
  11. curl_setopt($ch, CURLOPT_HEADER, 0);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  13. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  14. $output = curl_exec($ch);
  15. curl_close($ch);
  16.  
  17. $output = mb_convert_encoding($output, 'iso-8859-2', 'utf-8');
  18. $liczba = (substr_count($output, 'pozycja')/2)-1;
  19.  
  20. for($i=0;$i<=$liczba;$i++)
  21. {
  22. $doc = new DOMDocument();
  23. @$doc->loadHTML($output);
  24. $nodes1 = $doc->getElementsByTagName('nazwa_waluty');
  25. $wynik1 = $nodes1->item($i)->nodeValue;
  26. $nodes2 = $doc->getElementsByTagName('kod_waluty');
  27. $wynik2 = $nodes2->item($i)->nodeValue;
  28. $nodes3 = $doc->getElementsByTagName('kurs_sredni');
  29. $wynik3 = $nodes3->item($i)->nodeValue;
  30.  
  31. echo 'Waluta: <strong>'.$wynik1.'</strong> ('.$wynik2.') kosztuje dzisiaj <strong>'.$wynik3.'</strong>zł<br />';
  32. }
  33. ?>


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





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A co ci konkretnie się źle wyświetla? Bo u mnie Twój kod wyświetla wszystko idealnie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Maniek1313
post
Post #3





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 8.07.2011

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


Wrzuć sobie kod do Notepad ++ i ustaw sobie kodowanie pliku na utf-8 (bez BOM) , następnie zapisz plik i zobacz czy pomoże.
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Argumenty określające kodowanie w funkcji mb_convert_encoding powinny być odwrotnie podane
  1. $output = mb_convert_encoding($output, "UTF-8", "ISO-8859-2");


@nospor: Dokument jest w ISO-8859-2, a ma być w UTF-8. Strona też w UTF-8. Przyjrzyj się dokładnie, a zobaczysz, że jednak nie wszystko się idealnie wyświetla.
@Maniek1313: Tutaj BOM nie ma nic do rzeczy.

Ten post edytował mortus 6.12.2012, 12:36:10
Go to the top of the page
+Quote Post
djgarsi
post
Post #5





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Cytat(mortus @ 6.12.2012, 12:32:20 ) *
Argumenty określające kodowanie w funkcji mb_convert_encoding powinny być odwrotnie podane
  1. $output = mb_convert_encoding($output, "UTF-8", "ISO-8859-2");


@nospor: Dokument jest w ISO-8859-2, a ma być w UTF-8. Strona też w UTF-8. Przyjrzyj się dokładnie, a zobaczysz, że jednak nie wszystko się idealnie wyświetla.
@Maniek1313: Tutaj BOM nie ma nic do rzeczy.






takie coś wyświetla.


--------------------
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


A w sekcji head umieściłeś znacznik meta z określeniem kodowania strony?
  1. <!-- dla HTML5 -->
  2. <meta charset="utf-8">
  3. </head>


Ten post edytował mortus 6.12.2012, 12:40:57
Go to the top of the page
+Quote Post
Maniek1313
post
Post #7





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 8.07.2011

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


@up przetestowałem to co napisałeś i są krzaczki
przykład
Kod
dolar amerykański
forint (Węgry)
Go to the top of the page
+Quote Post
djgarsi
post
Post #8





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Cytat(mortus @ 6.12.2012, 12:39:06 ) *
A w sekcji head umieściłeś znacznik meta z określeniem kodowania strony?
  1. <!-- dla HTML5 -->
  2. <meta charset="utf-8">
  3. </head>


O masz, pomogło smile.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 11:49