2010-03-05 12 views
5

Próbuję napisać bardzo prosty kanał RSS, który wyświetli komiks z bieżącego dnia z sinfest.net, ale nie mogę wymusić na nim wyświetlania niczego poza połączonym tytułem. Link do jednej z wersji kodu:Jak wyświetlić obraz w RSS?

<?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-tylko kod (nie usuwać zmienne 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> 

Każdy pomysł co robię źle i jakiś kawałek może rada? Dziękuję za postęp.

+1

Proszę podać kod w pytaniu. Konieczność pobrania pliku zip i jego wyodrębnienia jest zbyt dużym wysiłkiem i grozi utratą ważnej części treści na przyszłość. ... strona pobierania również nie działa. Oczywisty "link" nie jest linkiem. – Quentin

+0

Przepraszam, zapomniałem o tej możliwości. – brovar

+0

Spróbuj pokazać nam RSS, a nie PHP. To jest RSS, z którym masz problemy, nieprawdaż? – Quentin

Odpowiedz

12

Najprościej jest CDATA tę sekcję obrazu (alternatywnie można „htmlentities()” to, ale to jest lepsze!)

<description><![CDATA[<img src="' . $image . '" />]]></description> 
+0

Dziękuję, pomogło - ale zaskakująco "htmlentities", a nie "CDATA". – brovar

+0

Cieszę się, że pomogło! – Fenton

Powiązane problemy