Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Atom - polskie znaki
Forum PHP.pl > Forum > PHP
tabbi
Witam,

nie wiem czemu nie moge wygenerować normalne źrodła atom w wersji 1.0

wywala mi bład w opisie summary i content, po drugie nie mam polskich znaków w mysql są PL znaki utf-8 general-ci. Na ie pojawia się informacja: Znaleziono nieprawidłowy znak w zawartości tekstowej. Błąd podczas przetwarzania zasobu.
Powiem tak niby prosta rzecz ale siedzialem 2 godziny i nie potrafiłem tego naprawić żal ... prosze o pomoc

mam w php

  1. header("Content-Type: application/atom+xml;");
  2. echo '<?xml version="1.0" encoding="utf-8"?>
  3. <feed xmlns="http://www.w3.org/2005/Atom" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:re="http://purl.org/atompub/rank/1.0">
  4. <title>Najnowsze pliki - example.pl</title>
  5. <link rel="alternate" type="application/xhtml+xml" href="http://www.pobieralnia.pl/" />
  6. <link rel="self" type="application/atom+xml" href="http://www.pobieralnia.pl/newFiles.xml"/>
  7. <updated>'.date('Y-m-d').'</updated>
  8. <author>
  9. <name>example.pl</name>
  10. </author>
  11. <id>http://www.example.pl/newFiles.xml</id>';
  12. mysql_connect('localhost', 'root', '');
  13. mysql_select_db('asd');
  14.  
  15. $query = mysql_query("SELECT * FROM files WHERE active = 1 ORDER BY add_date desc LIMIT 10");
  16. while($row = mysql_fetch_assoc($query))
  17. {
  18. echo '<entry>
  19. <title type="text">'.$row['name'].'</title>
  20. <summary type="text">'.substr(strip_tags($row['description']),0, 300).'</summary>
  21. <content type="html">'.substr(strip_tags($row['description']), 0, 300).'</content>
  22. <id>http://www.example.pl/'.$row['type'].'-'.$row['id'].'-'.$row['system_link'].'.html</id>
  23. <link rel="alternate" href="http://www.example.pl/'.$row['type'].'-'.$row['id'].'-'.$row['system_link'].'.html" type="application/xhtml+xml" hreflang="pl" />
  24. <updated>'.date(DATE_ATOM, strtotime($row['add_date'])).'</updated>
  25. </entry>'."\r\n";
  26. }
  27. echo '</feed>';


Przykład nie działa bo wywala błąd przy opisie summary i content:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <feed xmlns="http://www.w3.org/2005/Atom" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:re="http://purl.org/atompub/rank/1.0">
  3. <title>Najnowsze pliki - example.pl</title>
  4. <link rel="alternate" type="application/xhtml+xml" href="http://www.example.pl/" />
  5. <link rel="self" type="application/atom+xml" href="http://www.example.pl/newFiles.xml"/>
  6. <updated>2011-07-15</updated>
  7. <author>
  8. <name>example.pl</name>
  9. </author>
  10. <id>http://www.example.pl/newFiles.xml</id><entry>
  11. <title type="text">TouchCopy 9.99</title>
  12. <summary type="text"> TouchCopy to narz?dzie do zarz?dzania plikami na urz?dzeniach iPhone i iPod. program umo?liwia kopiowania muzyki, filmów, podcastów, playlist, zdj?? czy pobranych gier na PC. ponad to pozwala na zarz?dzanie i tworzenie kopii takich elementów notes, kalendarz czy lista kontaktów. Ponadto TouchCopy o</summary>
  13. <content type="html"> TouchCopy to narz?dzie do zarz?dzania plikami na urz?dzeniach iPhone i iPod. program umo?liwia kopiowania muzyki, filmów, podcastów, playlist, zdj?? czy pobranych gier na PC. ponad to pozwala na zarz?dzanie i tworzenie kopii takich elementów notes, kalendarz czy lista kontaktów. Ponadto TouchCopy o</content>
  14. <id>http://www.example.pl/plik-9973-touchcopy.html</id>
  15. <link rel="alternate" href="http://www.example.pl/plik-9973-touchcopy.html" type="application/xhtml+xml" hreflang="pl" />
  16. <updated>2011-07-14T15:07:06+02:00</updated>
  17. </entry>
  18. </feed>

erix
Cytat
po drugie nie mam polskich znaków w mysql są PL znaki utf-8 general-ci.

No przecież chyba sobie odpowiedziałeś?

Znaki w ATOM mają być zakodowane w UTF-8, a z tego, co widzę, to nie są.
tabbi
Hmm jak daje Set names utf8 nie za wiele to pomaga ?
nospor
Cytat
jak daje Set names utf8 nie za wiele to pomaga ?

Ty się pytasz czy stwierdzasz?

Cytat
po drugie nie mam polskich znaków w mysql są PL znaki utf-8 general-ci
Napisz to teraz po polsku, ze znakami interpunkcyjnymi: kropka, przecinek itp.
To jakie masz kodowanie w bazie ustawione ostatecznie?
tabbi
w bazie ut8-general-ci

potem w kodzie daje:

mysql_query('SET NAMES utf-8')

i nic nie daje, nie ma polskich liter dalej. Nie wiem co już mam zrobić żeby głupi kanał rss-atom uruchomić...
erix
A masz same znaki w bazie tak zakodowane?
tabbi
Problem leżał w znakach w opisie:

  1. strip(strip_tags(stripslashes($opis)))


gdzie:

  1. function strip($str)
  2. {
  3. $str=preg_replace('(&[a-z]+;)','',$str);
  4. return str_replace('&','',$str);
  5. }


Teraz hula ;P
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.