From 2310248dae45387a7b1b7708a435f8ee00baeb16 Mon Sep 17 00:00:00 2001 From: Alexander Chibrikin Date: Thu, 3 Dec 2020 14:09:08 +0300 Subject: [PATCH] Unify `link` tag for RSS & Atom into `$url` property (#20) In rss we have tag https://example.com/articles/some-amazing-article, but in Atom we have . So, lets extract it from href attr & put into `url` property. --- readme.md | 4 ++-- src/Feed.php | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index a7ef8eb..04efb4a 100644 --- a/readme.md +++ b/readme.md @@ -30,11 +30,11 @@ the information from the channel is easy: ```php echo 'Title: ', $rss->title; echo 'Description: ', $rss->description; -echo 'Link: ', $rss->link; +echo 'Link: ', $rss->url; foreach ($rss->item as $item) { echo 'Title: ', $item->title; - echo 'Link: ', $item->link; + echo 'Link: ', $item->url; echo 'Timestamp: ', $item->timestamp; echo 'Description ', $item->description; echo 'HTML encoded content: ', $item->{'content:encoded'}; diff --git a/src/Feed.php b/src/Feed.php index ab8dc73..6c5fe55 100644 --- a/src/Feed.php +++ b/src/Feed.php @@ -81,7 +81,8 @@ private static function fromRss(SimpleXMLElement $xml) // converts namespaces to dotted tags self::adjustNamespaces($item); - // generate 'timestamp' tag + // generate 'url' & 'timestamp' tags + $item->url = (string) $item->link; if (isset($item->{'dc:date'})) { $item->timestamp = strtotime($item->{'dc:date'}); } elseif (isset($item->pubDate)) { @@ -102,8 +103,9 @@ private static function fromAtom(SimpleXMLElement $xml) throw new FeedException('Invalid feed.'); } - // generate 'timestamp' tag + // generate 'url' & 'timestamp' tags foreach ($xml->entry as $entry) { + $entry->url = (string) $entry->link['href']; $entry->timestamp = strtotime($entry->updated); } $feed = new self;