| 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: 13 let
|
|||
0