Home > PHP/MySql, XML > RSS reader

RSS reader

128px-feed-iconsvgЭнд амлaсныхаа дагуу хялбархан RSS уншигч хийцгээе. Сайндаа ч биш маргааш XML -ийн тухай хичээл орохдоо энэ жишээг бас үзүүлэх гэж байгаа юм. Сүүлийн үед газар сайгүй бараг бүх сайтууд RSS feed эсвэл ATOM гэх мэт линкүүдтэй болжээ. Энэ бол тухайн сайт дээр гарсан зүйлийг уг сайтруу орохгүй өөрийн уншигч програмаар уншаад байх боломжийг олгож байгаа хэрэг юм. Ийм уншигч програмууд бий. Жишээ нь би Mozilla Thunderbird-ийг е-майл клиент, feed reader-ээ болгон ашигладаг.  Хялбар жишээнд ашиглах RSS нь миний энэ сайтынх болог. Үүний тулд сайтын RSS feedback -ийн URL -Ийг олно. Миний сайтын баруун дээр байгаа феедийн линк нь http://www.soyolerdene.com/index.php/feed гэж байна. Бидний зорилго бол үүнийг PHP ээр уншихад XML буцаж ирэх бөгөөд түүнийг нь форматын дагуу уншаад (parse) хийгээд дэлгэцэнд хэвлээд үзүүлэх явдал юм. Үүний тулд та бүхэн RSS -ийн XML ээр дүрслэгддэг форматыг мэддэг байх хэрэгтэй юм. Энэ тухай http://en.wikipedia.org/wiki/RSS_(file_format) хаягаар холбогдон дэлгэрэнгүй мэдээлэл аваарай. За ингээд хялбар жишээгээ PHP дээр хийе.

Юуны түрүүнд http://www.soyolerdene.com/index.php/feed хаягийг fopen функцээр нээн уншиж гарч ирсэн XML -ийг $str гэсэн хувьсагчид авъя. Код нь

1
2
3
4
5
6
7
8
$url="http://www.soyolerdene.com/index.php/feed";
 
$str="";
$fp = @fopen($url, "r") or die("SoyolParser: $url file-iig neej chadsangyi !");
while($data = fread($fp, 8096)) {
$str.=$data;
}
fclose($fp);

Энэ жишээг өөрийн интернет холбоотой байгаа локаль сервер дээрээ (apache/php суулгасан компьютер) ажилуулж үзвэл тохиромжтой. Учир нь ихэнх хостууд fopen функцын URL нээхийг нь хаасан байдаг. Энэ тохиолдолд PHP -ийн CURL гэж сайхан санг ашиглан нээх боломжтой. Ингээд $str хувьсагчид XML -ийг уншаад авчихлаа. Одоо түүнийгээ парсинг хийгээд хэвлээд үзүүлчихвэл зорилго биелэгдлээ. Үүний тулд PHP simpleXML гэж үнэхээр симпле нэгэн сан ашиглая.

1
2
3
4
5
6
7
$xml = new SimpleXMLElement($str);
 
foreach ($xml->channel->item as $medee) {
	echo '<a href="'.$medee->link.'"><h2>'.$medee->title.'</h2></a>';
	echo $medee->description;
	echo '<br /><br />';
}

$xml = new SimpleXMLElement($str); гэж XML обьект үүсгээд түүнийгээ RSS -ийн бүтэцээр итерац хийн бүх бичлэгүүдийг гаргаж байна. foreach дотор байгаа $xml->channel->item бол RSS 2.0 ийн бүтэцийг илэрхийлж байна. Санаа нь xml доорхи бүтэцтэй байвал ингэж уншиж болох нь.

<rss>
   <channel>
      <item>
      </item>
      <item>
      </item>
        ...
   </channel>
</rss>

Та бүхэн RSS 2.0 -ийн хамгийн энгийн форматыг харвал ийм байна. Харин $medee->link, $medee->title, $medee->description гэж хандаж байгаа нь item доторхи тагуудад хандаж байгаа байдал юм. item тус бүр нь доорхи бүтэцтэй байна.

   <item>
      <title>Space Exploration</title>
      <link>http://liftoff.msfc.nasa.gov/</link>
      <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada
        will experience a partial eclipse of the Sun on Saturday, May 31.</description>
      <pubdate>Fri, 30 May 2003 11:06:42 GMT</pubdate>
      <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>
    </item>

Мөн $medee->pubDate гээд нийтлэсэн өдрийг ч гаргаж болох нь. Ингээд л болоо. Амархан байгаа биз. 😉 Та нар өөрсдөө weather.com -оос цаг агаарын мэдээ унших гэх мэт зүйл хийж үзээрэй.

Энэ жишээг ажилуулж үзэх, кодыг татаж авах.

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

  1. ch
    April 4th, 2009 at 15:56 | #1

    hey ter ajluulj uzeh gdg dr chini darsan chini zugeer l html dr baahan bichtsen heden ymnuud bnashd. yg ene code oor unshaad haruulj bgaa ym yu ch alga bhiin? ter code iig tataj avaad html bolgood ajilluulsan chini bolohgui bna daa

  2. ch
    April 4th, 2009 at 16:12 | #2

    кодыг татаж авах. ened bgaa code chini aldaatai bgaa ym bish u?

  3. April 4th, 2009 at 16:16 | #3

    Хэ хэ. Ажилуулж үзэхээр чинь мэдээж HTML л гаргана шүү дээ. Яагаад гэвэл PHP код ажиллаад үр дүн нь HTML гаргана. Кодыг HTML болговол юу гэж ажиллах вэ дээ. Код ажиллаад HTML гаргах гэж байгаа юм чинь. Чиний мэдлэг энэ блогийг уншихад арай болоогүй байна.

  4. April 4th, 2009 at 16:18 | #4

    Чиний код гээд байгаа чинь HTML биш. Чи HTML болгоод л ажиллуулах гэж үзээд байгаа бололтой. PHP код шүү дээ наадах чинь. Үүнийг ажиллуулахын тулд чамд веб сервер, php 2 хэрэгтэй.

  5. April 4th, 2009 at 16:27 | #5

    Дашрамд хэлэхэд би энэ блогийг өөрийн хост дээр ажиллуулдаг тул бүх код энэ тэрээ тест хийгээд тавьдаг болно.

  6. ch
    April 4th, 2009 at 22:36 | #6

    php code gdgiig ni medne l dee. Gehdee html eer php gee duudaad ajluulj bolno bizdee. medeej bi php suulgaad http://localhost/xampp/ dotroosoo duudaj ajluulj uzsen. bas server dr turshij uzsen. Bi esvel buruu hiigeed bh shig bna. Joohon delgerengui tailbarlaad uguuch. Bas neg asuuh ym bna. webiin nuur huudasnaas uur neg huudasruu orohguigeer ter huudasniihaa source code iig ni yaj hardiin bol?

  7. April 4th, 2009 at 23:01 | #7

    XAMPP суулгасан байгаа бол c:\xampp\htdocs дотороо rss фолдер гэсэн үүсгээд энд байгаа кодыг татаж аваад задлаад түүн дотороо хуулаад http://localhost/rss/rss_reader.php гэж дуудахад ажиллах ёстой. Чи xampp суулгаад юм өөрчлөөгүй бол бол вебийн роот ө.х localhost гэхэд хандах фолдер чинь c:\xampp\htdocs байдаг. Ямар алдаа гараад байгааг нь явуулвал илүү юм хэлж болох байх.

    Өөр хуудасны PHP эх кодыг нь шууд үзэх гэсэн ойлголт бол байхгүй харин HTML src кодыг авъя гэвэл PHP дээр бол CURL гэж сан байгаа түүнийг судлаад үзээрэй.

  8. ch
    April 4th, 2009 at 23:17 | #8

    thanks bolj bna!

  9. April 4th, 2009 at 23:23 | #9

    Good. Сайн веб хөгжүүлэгч болоорой.

  10. ch
    April 4th, 2009 at 23:33 | #10

    /*


    */
    ene dotor baigaa medeelliig yaj harah u. ene tag deer class gts bolohoor yaj zaaj ugdug ym bol. zaaj ugsun tag dotor zurag orson bol zurgiig ni bas haruuldiin boluu

  11. ch
    April 4th, 2009 at 23:35 | #11

    div class = “coll” gtsn bol?

  12. April 4th, 2009 at 23:49 | #12

    /* */ бол програмын кодонд бичсэн тайлбар юм. Иймд харагдахгүй байх ёстой юм.

  13. ch
    April 5th, 2009 at 00:27 | #13

    bi uul /* */ ene dotor asuuh gsn ymaa garj magadgui gj bichsiin. taguud bsan bolhor shuugeed gargaagui bololtoi. Za ymr ch bsan weather.com oos tsag agaariin medee unshdag source hiinee. kk

  14. ch
    April 5th, 2009 at 00:56 | #14

    div id = feedBody
    gdg tag dotor baigaag harahiin tuld yaj bichih u?

  15. ch
    April 5th, 2009 at 01:18 | #15

    $xml -> div_id_feedBoy as $medee gheer bolhguin

  16. April 5th, 2009 at 19:05 | #16

    yun DIV bilee. Bi sain oilgohgyi baina

  17. ch
    April 5th, 2009 at 21:05 | #17

    ter deer channel tag iin item dotorh medeelliig unshdag jisheetei adil. Hervee div tag ni dotroo id=”feedBoy” gsn baival yaj zaaj ugdug ym bol?
    jishee ni
     div id==”Texttitle” //haalltai gd bodchoorooi haalt hiiheer shuugeed bn
       div id=”feedboy” //haalltai gd bodchoorooi
       …
       …
       /div
     /div

  18. ch
    April 5th, 2009 at 21:11 | #18

      <div id="Texttitle">
        <div id="feedBoy">
        <p>unshih medeelel</p>
        </div&gt
      /div&gt

  19. ch
    April 5th, 2009 at 21:14 | #19

     <div id="Texttitle">
          <div id="feedBoy">
          <p>unshih medeelel</p>
          </div>
     < /div>

  20. ch
    April 5th, 2009 at 21:26 | #20

    za za bolchloo

  21. April 5th, 2009 at 22:17 | #21

    DIV chini HTML -ийн элемент. RSS бол тодорхой форматтай XML бүтэц. Хэрвээ чи XML дотороо DIV гэсэн таг агуулж байгаа бол жаахан зохимжгүй байж магадгүй юм.

  22. sixtynine
    April 5th, 2009 at 22:32 | #22

    Сайнуу? Сайхан жишээ байна. Цаг агаар-г бол ингээд шийдчих юм байна. Баярлалаа… Монголын банкнуудаас rss-ээ тараадаг банк байнуу? Тэгвэл валютыг бас хийчихмээр байна. Хэхэхэ

  23. April 5th, 2009 at 23:02 | #23

    Манайд веб сервис сайн хөгжихгүй л байна. Гэхдээ тун удахгүй байхаа.

  24. Baagii
    June 11th, 2009 at 17:51 | #24

    Ene code deer xml filiin ehnii 3 n medeeg haruulahdaa yah we. Help me.

  25. June 11th, 2009 at 18:03 | #25

    Яаж ч авч болно. Нэг тоолуур аваад 3 болсон байвал break хийчих

  26. Baagii
    June 12th, 2009 at 09:15 | #26

    Harin yaj hiihuu adminaa

  27. Baagii
    June 12th, 2009 at 09:45 | #27

    dawtalt ashiglasan bolowch bolohgui yum

  28. соёл
    June 12th, 2009 at 11:19 | #28

    Баагий чиний хийх гээд байгаа юм байна.

    $i=1;
    foreach ($xml->channel->item as $medee) {
    echo ‘link.'”>’.$medee->title.’‘;
    echo $medee->description;
    echo ”;
    if($i++==3) break;
    }

    Эхлээд i=1 гэсэ тоолуур аваад тэрийг давталт дотороо шалгана. Тэр шалгалт нь i++ гэж нэгээр нэмэгдүүлээд тэгээд тэр нь 3-тэй тэнцүү байгааг шалгаад хэрвээ тийм бол break коммандийг дуудсан байна. Энэ тохиолдолд давталыг таслан гарна. break, continue гээд 2 үйлдэк байдаг даа. Чиний хувьд ерөнхий програмчлалаа жаахан сайжируулах хэрэгтэй юм байна.

  29. Baagii
    June 12th, 2009 at 17:11 | #29

    Thanks, harin tiimee, medehgui chadahgui zuil bwal asuuj bnaa

  30. ibbi
    July 30th, 2009 at 17:16 | #30

    uuchlaarai oilogdogguie barag buh site deer iim um bhiim yg ymar uuregtei zuil we tegeed bas 1 zuil bn kompiter deeree xampp ashiglaad database uusgedeg shig uuriin webdee baaz uusgej boloh uu bolvol yaaj uusgeh yst ve

  31. zolboo
    November 18th, 2009 at 19:17 | #31

    za yamarch bsan bayarlalaa Python helnii talaar medeelel nemeerei ho

  32. aagii
    February 1st, 2010 at 16:30 | #32

    hi ene ih goe jishee bna. Weather.com xml-n yamarshuu butetsteig ni yaj medeh uu

  33. mgl
    February 3rd, 2010 at 13:37 | #33

    hi tanii rss-n jisheetei adilhanaar weather.com-s tsag agaariihan medeeg unshih gheer xml-g yamarhuu butetsteig ni meddegui ee butetsiig ni yaj medej unshih uu tuslaach pls!!! :roll:

  34. aagii
    February 3rd, 2010 at 18:13 | #34

    hi saihan oilgomjtoi jishee bna weather.com-s duraarai unshij bolj bnaa

  35. hatnaa
    April 5th, 2010 at 01:10 | #35

    багшаа тааг гээд зүйлийг яаж авдаг юм бэ

  36. September 1st, 2010 at 17:01 | #36

    сайн уу rss, atom зурагтай мэдээ байхад зургийг нь харуулбал зүгээр байна… тэрийг яаж хийх вэ?

  37. September 1st, 2010 at 17:03 | #37

    ch :
    hey ter ajluulj uzeh gdg dr chini darsan chini zugeer l html dr baahan bichtsen heden ymnuud bnashd. yg ene code oor unshaad haruulj bgaa ym yu ch alga bhiin? ter code iig tataj avaad html bolgood ajilluulsan chini bolohgui bna daa

    сайн уу rss, atom зурагтай мэдээ байхад зургийг нь харуулбал зүгээр байна… тэрийг яаж хийх вэ?

  38. September 1st, 2010 at 21:48 | #38

    gej baival tegeed shuud garna.

  39. user
    December 15th, 2010 at 16:00 | #39

    mongol n tsag agaarin web xml oldoh bolov uu? tsag agaar hardag app hiih gesen yum

  40. Mendes
    March 23rd, 2012 at 09:13 | #40

    Сайн уу
    Би нэг юм лавлах гэсэн юм. XML дээр яаж монгол хэл танидаг болгодог юм бэ?

    landscape_small_images_1.jpg
    landscape_big_images_1.jpg

    энэ содны landscape-г монгол болгох гэсэн юм.

  1. No trackbacks yet.