Kreiranje .xml fajla za .rss (non-eng. znakovi ?) |
Dobrodošli, goste ( Prijava | Registracija )
![]() ![]() |
Kreiranje .xml fajla za .rss (non-eng. znakovi ?) |
Dec 26 2007, 18:31
Poruka
#1
|
|
|
Bok, ljudi,
imam problem sa generiranjem .XML fajla koji treba služiti kao RSS feed. Skripta koja otvara XML fajl i puni ga feedovima radi super dok ne dođe potreba za čćđš slovima. Feed u kojem su slova čćđš nije validan. Skripta izgleda ovako: CODE $query = "SELECT naslov,friendly_url,kratki_opis from blog where objavljeno='1'"; $baza->db_query($query); $rss_items = $baza->query_result; $rss_output.="<?xml version='1.0' encoding='utf-8'?> <rss version='2.0'> <channel> <title>NAslov feeda/title> <link>http://www.link.hr</link> <description>Sve sto je novo na sajtu saznaj odmah :)</description>"; foreach($rss_items as $item) { $rss_output.="<item><title>$item[naslov]</title><link>"._ROOT."blog/$item[friendly_url]</link> <description>$item[kratki_opis]</description></item>"; } $rss_output.="</channel> </rss>"; $file=fopen($filename,'wb'); fwrite($file, utf8_encode(($rss_output))); fclose($file); RSS Validator mi daje slijedeće greške: This feed does not validate. * line 6, column 359: Undefined named entity: Auml (97 occurrences) [help] ... godine. Bilo je tu ups and downowa, svaÄ\x91a, veselja, a projekt se ... ^ In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations. * line 6, column 365: description contains bad characters (44 occurrences) [help] ... e. Bilo je tu ups and downowa, svaÄ\x91a, veselja, a projekt se Ä ... PHP funkcija utf8_encode() pretvori znakove u utf-8 ekvivalente, ali ako otvorim feed u, recimo, firefoxu vidim samo naslov kanala, njegov opis i link. <item-i> se uopće ne prikazuju! AKo nema ćčđš slova, feed je OK. Pokušao sam se poigrati sa funkcijom htmlspecialchars(), ali ni s njom nisam imao sreće. Ako je netko od vas uspio izgenerirati .XML fajl za rss feed koji radi sa ne-engleskim znakovima neka mi molim vas pomogne jer su sati i sati već otišli u nepovrat Hvala, Luka |
|
|
|
|
Dec 27 2007, 02:59
Poruka
#2
|
|
|
cek, a kad uradis direktno echo, da li ih prikaze korektno?
mozda i server ne salje dobre headere, probaj da posaljes: CODE header('Content-Language: sr');
header('Content-Type: text/xml; charset=utf-8 '); |
|
|
|
|
Dec 27 2007, 10:47
Poruka
#3
|
|
|
Nisam siguran da shvaćam kako poslat header jer se ne radi o echo-u html fajla na ekran. Ako pogledaš skriptu vidjet ćeš da php otvori .xml faj stvai u njega sadržaj i zatvori ga. Što da učinim s headerima u tom slučaju???
Hvala |
|
|
|
|
Dec 27 2007, 21:03
Poruka
#4
|
|
|
Uspio sam napraviti validan rss 2.0 .xml fajl sa ne-engleskim znakovima. U pravilu je jako jednostavno. Sve xml elemente koji sadrže čćđšž slova ili html tagove treba provući samo kroz funkciju htmlspecialchars(). Znači ne treba koristiti funkciju utf8_encode(). Evo moje skripte ako ikada ikome zatreba:
CODE $rss_output.="<?xml version='1.0' encoding='utf-8'?>
<rss version='2.0'> <channel> <title>Naslov feeda</title> <link>http://www.link.com</link> <description>Sve sto je novo na sajtu saznaj odmah :)</description>"; //Ispisuje blog entry-e u rss fajl foreach($rss_blog_items as $item) { $rss_output.="<item><title>Iz bloga: $item[naslov]</title><link>"._ROOT."blog/$item[friendly_url]</link><description>".htmlspecialchars($item[kratki_opis])."</description></item>"; } $rss_output.="</channel> </rss>"; |
|
|
|
|
Dec 28 2007, 10:32
Poruka
#5
|
|
|
Nisam siguran da shvaćam kako poslat header jer se ne radi o echo-u html fajla na ekran. Ako pogledaš skriptu vidjet ćeš da php otvori .xml faj stvai u njega sadržaj i zatvori ga. Što da učinim s headerima u tom slučaju??? Hvala a. mozes da koristis .htaccess da kazes apachu koji enkoding da koristi b. opet sa .htaccess i mod_rewrite mozes taj feed da serviras pomocu php skripte koja ce da posalje odgovarajuce headere i onda da uradi echo rss fajla nije ni bitno posto si resio poblem, ali ako ti zatreba objasnjenje za ovo gore, pitaj... |
|
|
|
|
Dec 28 2007, 15:37
Poruka
#6
|
|
|
Hvala za objašnjenje unatoč tomu što je problem riješen. RESPECT!
Inače, pokušao sam u .htaccess staviti AddDefaultCharset UTF-8 ne bi li enkodirao fajl u utf-8, ali izgleda da je nepotrebno jer ako svoj fajl .xml otvorim u nekom editoru izgleda da je sačuvan u utf-8 without bom tako da je očito da PHP pri otvaranju-zapisivanju-zatvaranju fajla ne remeti enkodiranje. U svakom slučaju HVALA |
|
|
|
|
![]() ![]() |
| Lo-fi verzija | Trenutno vreme: Saturday 18. May 2013 - 21:04 |