Dobrodošli, goste ( Prijava | Registracija )

 
Reply to this topicStart new topic

Kreiranje .xml fajla za .rss (non-eng. znakovi ?)

V
luigi7up
poruka Dec 26 2007, 18:31
Poruka #1




Grupa: Članovi 1
Poruke: 22
Datum reg.: 30-August 07
Lokacija: Varaždin, HR
Član broj: 13,940



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 smile.gif

Hvala,
Luka
Go to the top of the page
 
+Quote Post
ivanhoe
poruka Dec 27 2007, 02:59
Poruka #2


Urednik

Grupa: Urednici
Poruke: 1,392
Datum reg.: 22-March 05
Lokacija: Beograd
Član broj: 424



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 ');
Go to the top of the page
 
+Quote Post
luigi7up
poruka Dec 27 2007, 10:47
Poruka #3




Grupa: Članovi 1
Poruke: 22
Datum reg.: 30-August 07
Lokacija: Varaždin, HR
Član broj: 13,940



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
Go to the top of the page
 
+Quote Post
luigi7up
poruka Dec 27 2007, 21:03
Poruka #4




Grupa: Članovi 1
Poruke: 22
Datum reg.: 30-August 07
Lokacija: Varaždin, HR
Član broj: 13,940



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>";
Go to the top of the page
 
+Quote Post
ivanhoe
poruka Dec 28 2007, 10:32
Poruka #5


Urednik

Grupa: Urednici
Poruke: 1,392
Datum reg.: 22-March 05
Lokacija: Beograd
Član broj: 424



CITAT (luigi7up @ Dec 27 2007, 10:47) *
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...
Go to the top of the page
 
+Quote Post
luigi7up
poruka Dec 28 2007, 15:37
Poruka #6




Grupa: Članovi 1
Poruke: 22
Datum reg.: 30-August 07
Lokacija: Varaždin, HR
Član broj: 13,940



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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 



Lo-fi verzija Trenutno vreme: Saturday 18. May 2013 - 21:04

Sve informacije (poruke, teme i sl.) predstavljaju stavove samo njihovih autora.
Objavljivanje informacija sa sajta u nekomercijalne svrhe moguće je samo uz navođenje URL adrese diskusije.
Za sve druge vidove distribucije potrebno je imati izričitu dozvolu administratora Dizajn Zone i/ili autora poruka.
Autorska prava za sadržaj poruke zadržava njihov autor, osim ako nije drugačije naznačeno.

powered by:Plus hosting