2011-11-26 22 views
0

下記のコードを使用して自分のサイトにRSSフィードを生成しようとしています。RSSフィード、画像の生成

代わりにあなたがIMGのリンクを参照して、フィードは私のページに示していたときの画像が表示されません

  1. このようなページに直接表示されます... <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>:RSSが登場するが、私は二つの問題を抱えていています

  2. サイトに表示される記事の量を制限するにはどうすればよいですか?ここで

はRSSへのリンクです:endElement()

<?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

を、フィード・コンテンツを出力するとき、あなたならば、それはprintf("<dt>%s</dt><br><br>",htmlspecialchars(trim($description)));

を呼び出します。ここでSpy RSS FEED は、私が使用していたコードですhtmlspecialchars機能を削除すると、<&lt;などに変換する代わりに、画像やその他のHTMLが正しく表示されるはずです

このコードでは、フィードの数を制限する方法は組み込まれていません。 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

イメージを表示すると言った内容が削除されました。フィードが本当にうんざりして、すべてが1つのテキストブロック、画像なし、タイトルなしとして表示されます。 –

+0

$ descriptionが出力された後に 'printf("

");を追加すると、書式設定が修正されるはずです。 – drew010

+0

あなたはそのセクションを削除するために削除するように言った。後で何を意味するのですか? –

関連する問題