0xDEADBEEF (⇉english edition⇉)

[RSS] [odkazy]
««« »»»

RSS v PHP

14. 6. 2020

RSS není kom­pli­ko­vané a není důvod pro to, aby chy­bělo na ja­kém­koli webu. Možná ho vy­u­žije jen pár lidí, ale ti vás za něj budou mi­lo­vat a co víc – úsilí nutné pro im­ple­men­taci je tak ma­ličké, že sku­tečně ne­e­xis­tuje žádná vý­mluva.

Bo­hu­žel, když vy­hle­dá­váte návody, jak na RSS v PHP, vý­sledky jsou ar­chaické a mají k do­ko­na­losti daleko. XML ty­picky vy­pi­sují ma­nu­álně bez es­ca­po­vání. Takový pro­gram snadno vy­pro­du­kuje ne­va­lidní XML, ně­které čtečky se ho ani ne­bu­dou snažit de­kó­do­vat a od­mít­nou je jako ne­či­telné smetí. Vý­sle­dek je potom stejný jako, kdyby web RSS vůbec neměl.

Tento článek je moje snaha tristní stav aspoň trochu na­pra­vit. Tady máte jed­no­du­chý skript pro ge­ne­ro­vání mi­ni­mál­ního, ale uži­teč­ného RSS v nových ver­zích PHP za pomoci Sim­pleXML. Vez­měte ho, zko­pí­rujte ho, upravte ho, po­u­žijte ho, udě­lejte z něj kni­hovnu, je to pár řádků a není příliš prav­dě­po­dobné, že by bylo nutné pro­vá­dět zá­sadní změny, když RSS stan­dard zůstal sta­bilní po­sled­ních 10 let.

class RSS {
  private $rss;

  function __construct(string $title, string $description = '', string $link = '') {
    $this->rss = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><rss version="2.0"/>');
    $this->rss->channel->title = $title;
    $this->rss->channel->description = $description;
    $this->rss->channel->link = $link;
  }

  function addItem(string $title, string $url, string $body, \DateTimeInterface $date): SimpleXMLElement {
    $item = $this->rss->channel->addChild('item');
    $item->title = $title;
    $item->guid = $url;
    $item->guid['isPermaLink'] = 'true';
    $item->description = $body;
    $item->pubDate = $date->format(DATE_RSS);
    return $item;
  }

  function toString(): string {
    return $this->rss->asXML();
  }
}

Kdyby mi ne­při­šlo trapné lepit na takový pli­va­nec kódu li­cenci, pro­hlá­sil bych to za volné dílo/public domain. Pokud by někdo přece jen chtěl chtěl ho­to­vou věc, skript je sou­částí RSS eve­ry­thing.


+1: Ge­ne­rá­tor RSS v BASHi

píše k47 (@kaja47, k47)