2011-11-26 113 views
0

我正在嘗試使用下面的代碼在我的網站上生成RSS訂閱源。該RSS是出現,但我有兩個問題:Rss Feed,生成圖片

  1. 當進料顯示我的網頁上的圖片顯示不出來,您看到的IMG鏈接直接出現這樣的頁面上... <a href="http://movies.nytimes.com/2011/11/18/movies/garbo-the-spy-about-juan-pujol-garcia-review.html?partner=rssnyt&emc=rss"><img src="http://graphics8.nytimes.com/images/2011/11/18/movies/18RDP_GARBO/18RDP_GARBO-thumbStandard.jpg" border="0" height="75" width="75" hspace="4" align="left"></a>

  2. 如何限制我網站上顯示的文章數量?

這裏是鏈接到RSS:Spy RSS FEED 這裏是我使用的代碼:

<?php 
$insideitem = false; 
$tag = ""; 
$title = ""; 
$description = ""; 
$link = ""; 
$locations = array('http://topics.nytimes.com/topics/reference/timestopics/subjects/e/espionage/index.html?rss=1'); 
srand((float) microtime() * 10000000); // seed the random gen 
$random_key = array_rand($locations); 
function startElement($parser, $name, $attrs) { 
global $insideitem, $tag, $title, $description, $link; 
if ($insideitem) { 
    $tag = $name; 
} elseif ($name == "ITEM") { 
    $insideitem = true; 
} 
} 
function endElement($parser, $name) { 
global $insideitem, $tag, $title, $description, $link; 
if ($name == "ITEM") { 
    printf("<dt><b><a href='%s' target=new>%s</a></b></dt>", 
    trim($link),htmlspecialchars(trim($title))); 
    printf("<dt>%s</dt><br><br>",htmlspecialchars(trim($description))); 
    $title = ""; 
    $description = ""; 
    $link = ""; 
    $insideitem = false; 
} 
} 
function characterData($parser, $data) { 
global $insideitem, $tag, $title, $description, $link; 
if ($insideitem) { 
switch ($tag) { 
    case "TITLE": 
    $title .= $data; 
    break; 
    case "DESCRIPTION": 
    $description .= $data; 
    break; 
    case "LINK": 
    $link .= $data; 
    break; 
} 
} 
} 
$xml_parser = xml_parser_create(); 
xml_set_element_handler($xml_parser, "startElement", "endElement"); 
xml_set_character_data_handler($xml_parser, "characterData"); 
$fp = fopen($locations[$random_key], 'r') 
or die("Error reading RSS data."); 
while ($data = fread($fp, 4096)) 
xml_parse($xml_parser, $data, feof($fp)) 
    or die(sprintf("XML error: %s at line %d", 
    xml_error_string(xml_get_error_code($xml_parser)),  
    xml_get_current_line_number($xml_parser))); 
fclose($fp); 
xml_parser_free($xml_parser); 
?> 
+0

你自己寫了那個代碼嗎? – Tomalak

回答

1

endElement(),輸出feed內容時,它會調用printf("<dt>%s</dt><br><br>",htmlspecialchars(trim($description)));

如果您刪除htmlspecialchars函數,那麼它應該正確顯示圖像和其他html而不是將<轉換爲&lt;等。

鑑於該代碼,沒有內置的方式來限制提要的數量。 Nytimes可能有一個選項可以作爲限制結果數量的查詢字符串的一部分傳遞,但我不確定。

速戰速決將添加一個名爲$numShown或類似的東西全局變量,並在endElement()開始,你可以增加它,看到檢查其是否高於某個值,如果是剛剛return前到所有printf調用以輸出供稿項目。

<?php 

function endElement($parser, $name) { 
    global $insideitem, $tag, $title, $description, $link, $numShown; 

    if ($name == "ITEM") { 
     $numShown++; 

     if ($numShown >= 5) { 
      return ; 
     } 

     printf ("<dt><b><a href='%s' target=new>%s</a></b></dt>", trim ($link), htmlspecialchars (trim ($title))); 
     printf ("<dt>%s</dt><br><br>", trim ($description)); 
     $title = ""; 
     $description = ""; 
     $link = ""; 
     $insideitem = false; 
    } 
} 
+0

我刪除了你說的顯示圖像,現在飼料真的搞砸了,並顯示一切爲一個文本塊,沒有圖片,並沒有標題。 –

+0

如果在打印$ description後添加'printf(「

」);'格式應該是固定的。 – drew010

+0

你告訴我刪除以刪除該部分..你是什麼意思後? –