Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML] DOM i SimpleXML, rss interii mnie załamuje
taktu
post
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 7
Dołączył: 19.05.2008

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


Pytanie: jak dobrać się do pliku rss który publikuje interia?

plik: http://kanaly.rss.interia.pl/turystyka.xml

problem: kodowanie pliku to UTF-8, ale znalazły się w nim słowackie znaki które w UTF już niestety nie są.

Do tej pory używałem:

  1. $rssObject = simplexml_load_string( $address, 'SimpleXMLElement', LIBXML_NOCDATA );


Co dało błędy:
  1. Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in
  2. Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in


Więc spróbowałem:

  1. $xmlDoc = new DOMDocument();
  2. $xmlDoc->load( $address );


No i błąd:

  1. Warning: DOMDocument::load() [function.DOMDocument-load]: Input is not proper UTF-8, indicate encoding ! Bytes: 0xB9 0x69 0x6E 0x73 in http://kanaly.rss.interia.pl/turystyka.xml, line: 94 in


Błąd ominąłem w simplexml_load_string:
  1.  
  2. $file = file_get_contents( $address );
  3.  
  4. $content = mb_convert_encoding( $content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
  5. //lub
  6. $content = iconv( mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true), 'UTF-8', $content );
  7. //efekt ten sam
  8.  
  9. if ($rssObject = simplexml_load_string( $content, 'SimpleXMLElement', LIBXML_NOCDATA ) ){
  10. // ...
  11. }

i otrzymałem
  1. ?šwiÄ?ta Bo??ego Narodzenia we W??oszech sÄ? obchodzone na wiele r?(IMG:style_emoticons/default/questionmark.gif) ?nych sposob??w


Czy ktoś ma większe doświadczenie w kodowaniach? Zależy mi na tym aby tekst był czytelny, słowackie znaki mogą być wykrzaczone. Wszelka pomoc mile widziana.

Ten post edytował taktu 26.12.2009, 19:30:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
byqu
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 5
Dołączył: 24.08.2006
Skąd: Warszawa

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


Spróbuj konwertować polskie znaczki według ich zapisu szesnastkowego:
  1. <?php
  2. $chars = array(
  3. "\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
  4. "\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
  5. "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a",
  6. "\x9f" => "\xc5\xbc", "\xaf" => "\xc5\xbb", "\xbf" => "\xc5\xba", "\xac" => "\xc5\xb9",
  7. "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83",
  8.  
  9. "\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
  10. "\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
  11. "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
  12. "\xbc" => "\xc5\xbc", "\xac" => "\xc5\xbb", "\xbf" => "\xc5\xba", "\xaf" => "\xc5\xb9",
  13. "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83",
  14. );
  15. $string = strtr($string, $chars);
  16. ?>


Jakby któryś znak zamieniało na nie ten, to zobacz na tablicę http://eazu.pl/index.php/zamiana-polskich-...e-odpowiedniki/ , bo to z niej utworzyłem tę.

Ten post edytował byqu 26.12.2009, 20:15:28
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 01:17