Autor | Zpráva | ||
---|---|---|---|
peteo Profil |
Dobrý deň, večer, ráno,
mám urobený skriptík v php na tvorbu rss.xml. Problém je, že pokiaľ v kóde nechám zakomentované riadky odkomentované, text pôvodne v utf-8 premení na CP1250. Pokiaľ riadky nechám zakomentované, teda <descriprion> sa netvorí, je výsledný dokument v poriadku v utf-8. Vie mi niekto poradiť, čo s tým? doplnenie: zakomentované až po vykonaní skriptu pre lepšiu orientáciu, čo spôsobuje problém. kód (teda problémová časť): while (list ($linerss_num, $linerss) = each ($nunu)) { if ($linerss<>$stop){ $testrss=strpos($linerss,$dotazrss); if ($testrss === false) {} else { $nazovrss=explode("</span>",$linerss); $nazovrssa=str_replace(" ","%20",$nazovrss[0]); $nazovrssa=str_replace(",","%2C",$nazovrssa); // $textrssa = str_replace("<br>","\n",$linerss); // $textrssb = explode("●",$textrssa); // $textrssb[1] = strip_tags($textrssb[1]); // $textrssb[1] = substr($textrssb[1],1,60); // $textrssb[1] = $textrssb[1]."…"; $textrss = "http://co-to-je.sk/spresne.php?dotaz=".$nazovrssa; fwrite($fp,"<item>\n "); fwrite($fp,"<title>"); fwrite($fp,$nazovrss[0]); fwrite($fp,"</title>\n "); fwrite($fp,"<link>\n "); fwrite($fp,$textrss); fwrite($fp,"\n </link>\n "); fwrite($fp,"<pubDate>"); $casrsszmenyrss = date("r", filemtime ($bookrss[$i])); fwrite($fp,$casrsszmenyrss); fwrite($fp,"</pubDate>\n "); // fwrite($fp,"<description>"); // fwrite($fp,$textrssb[1]); // fwrite($fp,"</description>\n"); fwrite($fp,"</item>\n "); } } } a výsledok (iba kúsok, pre ilustráciu): <item> <title>BabadĹľanjan, Arno</title> <link> http://co-to-je.sk/spresne.php?dotaz=BabadĹľanjan%2C%20Arno </link> <pubDate>Tue, 22 Jan 2013 00:06:27 +0100</pubDate> <description>ArmĂ©nsko * 22. 1. 1921 †11. 11. 1983 skladateÄľ, klavĂr…</description> </item> <item> <title>Bacon, Francis</title> <link> http://co-to-je.sk/spresne.php?dotaz=Bacon%2C%20Francis </link> <pubDate>Tue, 22 Jan 2013 00:06:27 +0100</pubDate> <description>VeÄľká Británia * 22. 1. 1561 (LondĂ˝n) †9. 4. 1626 (nĂ…</description> </item> <item> |
||
tiso Profil |
#2 · Zasláno: 22. 1. 2013, 16:16:23
Problémov môže byť viacero:
1) kódovanie dát v databáze 2) kódovanie súboru, ktorý vyťahuje a spracúva dáta z databázy (tento tvoj skript) 3) serverové hlavičky, ktoré sa posielajú s výsledným RSS. |
||
peteo Profil |
tiso:
1 - utf-8 2 - utf-8 3 - kde, resp. ako to zistím? podotýkam, že pokiaľ to zostane takto (zdrojový kód), teda zakomentované, je vytvorené xml v potiadku, teda v utf-8. problémy vznikajú až po odkomentovaní. |
||
tiso Profil |
#4 · Zasláno: 22. 1. 2013, 17:30:01
peteo: buď v nástrojoch prehliadača, alebo pomocou http://web-sniffer.net/ - zadaj url RSS-ka a pozri aké hlavičky ti vráti v odpovedi (HTTP Response Header). Napríklad táto diskusia vracia: Content-Type: text/html; charset=iso-8859-2
|
||
peteo Profil |
tiso:
No vyriešil som to tak, že som text, ktorá chcem, aby bol zobrazený, rozsekal (teda mám iba celé slová): (problémové úseky, ale už funkčné, sú odsadené) while (list ($linerss_num, $linerss) = each ($nunu)) { if ($linerss<>$stop){ $testrss=strpos($linerss,$dotazrss); if ($testrss === false) {} else { $nazovrss=explode("</span>",$linerss); $nazovrssa=str_replace(" ","%20",$nazovrss[0]); $nazovrssa=str_replace(",","%2C",$nazovrssa); $textrssa = str_replace($zmenrss," ",$linerss); $textrssb = explode("●",$textrssa); $textrssb[1] = strip_tags($textrssb[1]); $textrssc = explode(" ",$textrssb[1]); $nonono=sizeof($textrssc);$nonono=($nonono<$nnn)*$nonono+($nonono>=$nnn)*$nnn;$nonono--; $textrssd=""; for ($nvnv=0;$nvnv<$nonono;$nvnv++){$textrssd=$textrssd.$textrssc[$nvnv]." ";}$textrssd.="…"; $textrss = "http://co-to-je.sk/spresne.php?dotaz=".$nazovrssa; fwrite($fp,"<item>\n "); fwrite($fp,"<title>"); fwrite($fp,$nazovrss[0]); fwrite($fp,"</title>\n "); fwrite($fp,"<link>\n "); fwrite($fp,$textrss); fwrite($fp,"\n </link>\n "); fwrite($fp,"<pubDate>"); $casrsszmenyrss = date("r", filemtime ($bookrss[$i])); fwrite($fp,$casrsszmenyrss); fwrite($fp,"</pubDate>\n "); fwrite($fp,"<description>"); fwrite($fp,$textrssd); fwrite($fp,"</description>\n"); fwrite($fp,"</item>\n "); } } } a s výsledkom som spokojný (časť): <link> http://co-to-je.sk/spresne.php?dotaz=Bacon%2C%20Francis </link> <pubDate>Tue, 22 Jan 2013 00:06:27 +0100</pubDate> <description> Veľká Británia * 22. 1. 1561 (Londýn) † 9. 4. 1626 (následky podchladenia pri experimente) filozof, právnik, predstaviteľ …</description> </item> <item> <title>Baczyński, Krzysztof Kamil</title> <link> http://co-to-je.sk/spresne.php?dotaz=Baczyński%2C%20Krzysztof%20Kamil </link> <pubDate>Tue, 22 Jan 2013 00:06:27 +0100</pubDate> <description> Poľsko * 22. 1. 1921 † 4. 8. 1944 básnik. Padol vo Varšavskom …</description> </item> <item> <title>Bagová, Ivanna</title> <link> http://co-to-je.sk/spresne.php?dotaz=Bagová%2C%20Ivanna </link> <pubDate>Tue, 22 Jan 2013 00:06:27 +0100</pubDate> <description> SR * 22. 1. 1993 (Irsava, Ukrajina) speváčka. Albumy: Oheň v duši …</description> </item> Neviem, čo na to programátori, ale funguje to, a to je pre mňa dôležité. tiso, díky za snahu. ešte predsa len niečo: v riadku 9 kódu odkazujem na pole $zmenrss=Array ("<br>"," "); a do tohoto poľa potrebujem dostať (a neviem ako) nejaké zástupné znaky na entity (ako je napr ), ale tak, aby tam boli všetky entity - niečo ako &*;, proste tak, aby som tam všetky entity nemusel vypisovať. a to neviem urobiť. Poradí niekto? Ďakujem. |
||
Časová prodleva: 12 let
|
0