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
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
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>","&nbsp;");

a do tohoto poľa potrebujem dostať (a neviem ako) nejaké zástupné znaky na entity (ako je napr &nbsp;), 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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0