pilots Posted November 6, 2007 Report Share Posted November 6, 2007 man php kodam ir problēmas ar nevalīda rss lasīšanu. attiecīgajā rss barotnē title elementā (un iespējams arī citur tās barotnes kodā) ir simboli & (bet būtu jābūt &). es, protams, varu tikai savā pusē risinājumu meklēt, vai ņemt barotni no saraksta ārā. pagaidām izdomāju pirms parsēšanas ar str_replace samainīt & pret & , bet lieta tāda, ka citās barotnēs ir &. vai ir iespējams izveidot skriptu, kurš aizvietotu tikai &, lai nesanāk & ? Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2007 Report Share Posted November 6, 2007 Es jau nu ieteiktu tādu fīdu neparsēt. Bet ir iespējams arī ar regexpu repleicot to & uz & tā lai &'us neaiztiek. preg_replace('/&([^a]|a[^m]|am[^p]|amp[^;])/', '&\1', $text); Tik te protams atkal gļuks ar visādiem " ' & #177; un citām entītēm... Vispārīgā gadījumā būtu jālaiž regexps uz &<jebkas>; un callbackā tas <jebkas> jāpārbauda uz html entītes valīdumu - ja nav, tad jārepleiso uz to amp, ja ir entīte, tad jāatstāj kā ir. Link to comment Share on other sites More sharing options...
pilots Posted November 6, 2007 Author Report Share Posted November 6, 2007 jā, gļuks manliekas neizpaliks. šobrīd man tikai & ir traucējis. nezinu, kas notiks ar citiem neatļautajiem simboliem. šķiet vienā vakarā būs jānotestē, kas notiek. es pats tos regexp nemāku, biju izdomājis aizstāt visus & ar & un pēcāk otru reizi iet cauri un aizstāt & ar & ... Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2007 Report Share Posted November 6, 2007 Tavs veids nestrādās, ja ienāks sekojošs teksts: & Link to comment Share on other sites More sharing options...
Paulinjsh Posted November 9, 2007 Report Share Posted November 9, 2007 <description><![CDATA[<p>Rakstam ko tik gribam</p>]]></description> Link to comment Share on other sites More sharing options...
andrisp Posted November 9, 2007 Report Share Posted November 9, 2007 Paulinjsh, gandrīz ko gribam :) "]]>" Ja gribēsies kontentā ielikt, tad nāksies eskeipot kautkā. Link to comment Share on other sites More sharing options...
pilots Posted November 9, 2007 Author Report Share Posted November 9, 2007 (edited) CDATA iekš title elementa maz var likt? Edited November 9, 2007 by pilots Link to comment Share on other sites More sharing options...
bubu Posted November 9, 2007 Report Share Posted November 9, 2007 CDATA var likt jebkur kur parasta xml elementa dati var atrasties. Tam nav nekāda sakara ar tava xml elementu konkrēto pielietojumu (title). <root> some text <elem1><CDATA[shnjaga1]]></elem1> blah blah <elem2>zzzz<CDATA[shnjaga2]]>yyy</elem2> blah <CDATA[shnjaga3]]> </root> Link to comment Share on other sites More sharing options...
pilots Posted November 9, 2007 Author Report Share Posted November 9, 2007 vai es pareizi sapratu, ka Paulinjsh norādot uz CDATA, rosina pirms parsēšanas, piemēram, manā gadījumā aizstāt <title> ar <![CDATA[ un </title> ar ]]> ? ja nu tas tā darbotos, tad liekot datubāzē, atliktu tik piemest htmlspecialchars. piedodiet, ka to jautāju, bet nav pieejams kompjūters ar localhost testēšanai šobrīd. Link to comment Share on other sites More sharing options...
bubu Posted November 10, 2007 Report Share Posted November 10, 2007 Nē, tu nesaprati. CDATA nav <title> elementa aizstājējs. CDATA ir character-data. Skaties, šie divi XML ir praktiski vienādi: <xml> <title>blah</title> <author>bubu</title> <elem1> asdasd<b>zzzz</b>yyyy</elem1> </xml> un <xml> <title><![CDATA[blah]]></title> <author><![CDATA[bubu]]></title> <elem1> <![CDATA[asdasd]]><b><![CDATA[zzzz]]></b><![CDATA[yyyy]]></elem1> </xml> Taču, ja tev nav pieeja sourcei, kas ģenerē šos xml'us, un nav iespējas to izmainīt, tad tur neko nepadarīsi ar šiem CDATA. Link to comment Share on other sites More sharing options...
Recommended Posts