Как отобразить изображение в RSS? - PullRequest
5 голосов
/ 05 марта 2010

Я пытаюсь написать очень простой канал RSS, который бы отображал комикс текущего дня с сайта sinfest.net, но я не могу заставить его отображать что-либо, кроме связанного заголовка. Ссылка на одну из версий кода:

<?php
$page = file_get_contents('http://www.sinfest.net/index.php');
$title = '';
$description = '';
$link = '';
$date = date("Y-m-d");
if (preg_match('~<img src="(http://sinfest\\.net/comikaze/comics/.*\\.gif)" alt="(.*)" border="0" />~isU', $page, $match)) {
        $title = $match[2];
        $description = "<img src='{$match[1]}'/>";
}
if (preg_match('~<a href="http://sinfest\\.net/archive_page\\.php\\?comicID=([0-9]*)"><img src="images/prev_a.gif"~isU', $page, $match)) {
        $link = 'http://sinfest.net/archive_page.php?comicID=' . ($match[1]+1);
}
$ok = $title && $description && $link;
$image = "http://www.sinfest.net/comikaze/comics/" . $date . ".gif";
echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';
echo '<rss version="2.0">
        <channel>
                <title>Latest Sinfest</title>
                <link>http://www.sinfest.net/</link>
                <description>Latest Sinfest</description>
                <image>
                      <url>' . $image . '</url>
                      <title>' . htmlspecialchars($title) . '</title>
                      <link>' . htmlspecialchars($link) . '</link>
                </image>';
if ($ok):
echo '               <item>
                        <title>' . htmlspecialchars($title) . '</title>
                        <link>' . htmlspecialchars($link) . '</link>
                        <description><img src="' . $image . '" /></description>
                        <enclosure url="' . $image . '" type="image/jpeg" />
                </item>';
elseif (!isset($_GET['noerror'])): 
echo '                <item>
                        <title>Error parsing news.' . date('Y-m-d H:i:s') . '</title>
                        <link>about:blank</link>
                        <description>Error parsing news.</description>
                </item>';
endif;
echo '        </channel>
</rss>';
?>

Код только для RSS (я не удалил переменные PHP):

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
    <channel>
        <title>Latest Sinfest</title>
        <link>http://www.sinfest.net/</link>
        <description>Latest Sinfest</description>
        <image>
            <url>' . $image . '</url>
            <title>' . htmlspecialchars($title) . '</title>
            <link>' . htmlspecialchars($link) . '</link>
        </image>
        <item>
            <title>' . htmlspecialchars($title) . '</title>
            <link>' . htmlspecialchars($link) . '</link>
            <description><img src="' . $image . '" /></description>
            <enclosure url="' . $image . '" type="image/jpeg" />
        </item>
    </channel>
</rss>

Есть идеи, что я делаю не так, и, может быть, какой-нибудь совет? Спасибо заранее.

1 Ответ

12 голосов
/ 05 марта 2010

Лучше всего сделать CDATA с этим разделом изображения (в качестве альтернативы вы можете использовать его для htmlentities (), но это лучше!)

<description><![CDATA[<img src="' . $image . '" />]]></description>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...