2016-11-16 7 views
1

私はこれとしばらくの間苦労していましたが、同様の質問から助けがありましたが、私の例ではうまくいかないようです。RSSフィードが空のときにテキストを表示するには

私は自分のRSSフィードを自分のウェブサイトに持っています。私がしようとしているのは、RSSフィードが空白/空であるときに「警告なし」というメッセージを表示することです。 RSSフィードに何かがある場合は、それを表示したいだけです。

私の人生のために、私はこれを動作させることができません!私はそれが空白であることを認識することができません...これは可能ですか?それはすべてのヘルプははるかに高く評価されるだろう

<?php 
/* 
    RSS Extractor and Displayer 
    (c) 2007-2010 Scriptol.com - Licence Mozilla 1.1. 
    rsslib.php 

    Requirements: 
    - PHP 5. 
    - A RSS feed. 

    Using the library: 
    Insert this code into the page that displays the RSS feed: 

    <?php 
    require_once("rsslib.php"); 
    echo RSS_Display("http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml", 15); 
    ? > 

*/ 

$RSS_Content = array(); 

function RSS_Tags($item, $type) 
{ 
     $y = array(); 
     $tnl = $item->getElementsByTagName("title"); 
     $tnl = $tnl->item(0); 
     $title = $tnl->firstChild->textContent; 

     $tnl = $item->getElementsByTagName("link"); 
     $tnl = $tnl->item(0); 
     $link = $tnl->firstChild->textContent; 

     $tnl = $item->getElementsByTagName("pubDate"); 
     $tnl = $tnl->item(0); 
     $date = $tnl->firstChild->textContent;  

     $tnl = $item->getElementsByTagName("description"); 
     $tnl = $tnl->item(0); 
     $description = $tnl->firstChild->textContent; 

     $y["title"] = $title; 
     $y["link"] = $link; 
     $y["date"] = $date;  
     $y["description"] = $description; 
     $y["type"] = $type; 

     return $y; 
} 


function RSS_Channel($channel) 
{ 
    global $RSS_Content; 

    $items = $channel->getElementsByTagName("item"); 

    // Processing channel 

    $y = RSS_Tags($channel, 0);  // get description of channel, type 0 
    array_push($RSS_Content, $y); 

    // Processing articles 

    foreach($items as $item) 
    { 
     $y = RSS_Tags($item, 1); // get description of article, type 1 
     array_push($RSS_Content, $y); 
    } 
} 

function RSS_Retrieve($url) 
{ 
    global $RSS_Content; 

    $doc = new DOMDocument(); 
    $doc->load($url); 

    $channels = $doc->getElementsByTagName("channel"); 

    $RSS_Content = array(); 

    foreach($channels as $channel) 
    { 
     RSS_Channel($channel); 
    } 

} 


function RSS_RetrieveLinks($url) 
{ 
    global $RSS_Content; 

    $doc = new DOMDocument(); 
    $doc->load($url); 

    $channels = $doc->getElementsByTagName("channel"); 

    $RSS_Content = array(); 

    foreach($channels as $channel) 
    { 
     $items = $channel->getElementsByTagName("item"); 
     foreach($items as $item) 
     { 
      $y = RSS_Tags($item, 1); // get description of article, type 1 
      array_push($RSS_Content, $y); 
     } 

    } 

} 


function RSS_Links($url, $size = 15) 
{ 
    global $RSS_Content; 

    $page = "<ul>"; 

    RSS_RetrieveLinks($url); 
    if($size > 0) 
     $recents = array_slice($RSS_Content, 0, $size + 1); 

    foreach($recents as $article) 
    { 
     $type = $article["type"]; 
     if($type == 0) continue; 
     $title = $article["title"]; 
     $link = $article["link"]; 
     $page .= "<li><a href=\"$link\">$title</a></li>\n";   
    } 

    $page .="</ul>/n"; 

    return $page; 

} 



function RSS_Display($url, $size = 15, $site = 0, $withdate = 0) 
{ 
    global $RSS_Content; 

    $opened = false; 
    $page = ""; 
    $site = (intval($site) == 0) ? 1 : 0; 

    RSS_Retrieve($url); 
    if($size > 0) 
     $recents = array_slice($RSS_Content, $site, $size + 1 - $site); 

    foreach($recents as $article) 
    { 
     $type = $article["type"]; 
     if($type == 0) 
     { 
      if($opened == true) 
      { 
       $page .="</ul>\n"; 
       $opened = false; 
      } 
      $page .="<b>"; 
     } 
     else 
     { 
      if($opened == false) 
      { 
       $page .= "<ul>\n"; 
       $opened = true; 
      } 
     } 
     $title = $article["title"]; 
     $link = $article["link"]; 
     $page .= "<li><a href=\"$link\">$title</a>"; 
     if($withdate) 
     { 
     $date = $article["date"]; 
     $page .=' <span class="rssdate">'.$date.'</span>'; 
    } 
     $description = $article["description"]; 
     if($description != false) 
     { 
      $page .= "<br><span class='rssdesc'>$description</span>"; 
     } 
     $page .= "</li>\n";   

     if($type==0) 
     { 
      $page .="</b><br />"; 
     } 

    } 

    if($opened == true) 
    { 
     $page .="</ul>\n"; 
    } 
    return $page."\n"; 

} 


?> 

、RSS_Displayは私が下に提供しているrsslib.phpファイル、からであるのに役立ちます場合はここで

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Loading directly an RSS feed and displaying it</title></head> 
<link type="text/css" href="rss-style.css" rel="stylesheet"> 

<body bgcolor="#FFE991"> 
<div id="zone" ><img src="/images/alert-icon-120.png" alt="Weather Warnings for SA. Issued by the Australian Bureau of Meteorology" align="left" style="padding-right: 4pt"width="15" height="15" border="0"/>&nbsp;Current South Australian Statewide Warnings:<small><em><font color="black"> &nbsp;&nbsp;Provided by The Bureau of Meteorology</font></em></small> 
</div> 
<fieldset class="rsslibbomsa"> 
<?php 
    require_once("rsslib.php"); 
    $url = "http://www.bom.gov.au/fwo/IDZ00057.warnings_sa.xml"; 
    $rss = RSS_Display($url, 15, false, false); 

if ($rss == '') 
{ 
       // nothing shown, do whatever you want 
    echo 'No Current Warnings'; 
    } 


    else 
{ 
// something to display 

echo $rss123; 

} 

?> 
</fieldset> 
</body> 
</html> 

、私のコードです。

多くのありがとうございます。

答えて

0

rsslibコードを見ると、rssに記事がない場合、返される文字列は\nになります。

テストRSSが空であるかどうかを確認するには、これに加えてif ($rss == "\n")


する必要があり、rsslibは、古いコード(2010)のようです、それはオブジェクト指向されていません(これは問題があるためであります

また、このクラスはRSSのすべての書式設定を行います。したがって、変更する場合は、rsslibコードを変更する必要があります。

あなたはuldは、オブジェクト指向で使いやすいhttps://github.com/dg/rss-phpのような他のクラスの使用を検討します。

+0

それがうまくいった!ありがとう、非常に感謝します。私はあなたの他の提案も見ていきます....もう一度感謝します。 – cheffy

関連する問題