日期:2014-05-17  浏览次数:20408 次

新人提问:这个问题也太诡异了吧。。关于RSS的基础应用
PHP code

<?php
    require_once('magpierss/rss_fetch.inc');
    
    $url = "http://localhost/PHPProject/RSS/RSS.xml";
    $rss = fetch_rss($url);
    
    $feedTitle = $rss->channel['title'];
    echo '<p>Latest News from <strong>' . $feedTitle . '</strong></p>';
    
    foreach ($rss->item as $it) {
        $link = $it['link'];
        $title = $it['title'];
        $description = isset($it['description']) ? $it['description'] : '';
        
        echo '<p><a href=\"$link\">' . $title . '</a><br />' . $description . '</p>';
    }
?>



XML:
(http://localhost/PHPProject/RSS/RSS.xml)
XML code

  <?xml version="1.0" encoding="UTF-8" ?> 
- <rss version="2.0">
- <channel>
  <title>XHTML</title> 
  <link>http://localhost/PHPProject/NewFile.html</link> 
  <description>Free web building tutorials</description> 
  <category>Web development</category> 
  <language>en-US</language> 
  <copyright>2006 w3school.com.cn. All rights reserved.</copyright> 
- <item>
  <title>RSS Tutorial</title> 
  <link>http://localhost/PHPProject/NewFile.html</link> 
  <description>New RSS tutorial on W3School</description> 
  <author>service@w3school.com.cn</author> 
  <comments>http://localhost/PHPProject/NewFile.html</comments> 
  </item>
  </channel>
  </rss>



1.
为什么运行显示为:
Latest News from W3School Home Page

RSS Tutorial
New RSS tutorial on W3School

后点击RSS Tutorial后却显示HTTP 403?




2.
在PHP中的foreach ($rss->item as $it)中的item为什么非要设置items才可以运行成功,否则为
Latest News from W3School Home Page


Notice: Undefined property: MagpieRSS::$item in D:\Apache Group\Apache2\htdocs\PHPProject\index5.php on line 10

Warning: Invalid argument supplied for foreach() in D:\Apache Group\Apache2\htdocs\PHPProject\index5.php on line 10


但我的XML中<channel>之内是<item>而非<items>喔。。。。




3.
我修改XML文件之前的<channel>中的<title>是“W3School Home Page”,所以运行时显示为Latest News from W3School Home Page;但修改后却如上所示<title>XHTML</title>,为什么刷新后也显示Latest News from W3School Home Page?

就算重启整个zend studio都继续显示Latest News from W3School Home Page,真不明白。。。。也不关缓存的事啊。。我已经清除了缓存了


麻烦各位帮帮忙。。我还有分加的

------解决方案--------------------
1. 你的代码有问题:
echo '<p><a href=\"$link\">' . $title . '</a><br />' . $description . '</p>';
由于 $link在单引号内所以不会被解析。所以链接也就是 本页链接$link
至于为什么403无权限就要看你的服务器设置。

2. RSS标准中规定: A channel may contain any number of <item>s.
XML code
<channel>
     ...
     <item>...</item>
     <item>...</item>
     <!-- 可能有多个 -->
</channel>

------解决方案--------------------
探讨

引用:

你怎么修改的。下面这样呢:
echo "<p><a href='$link'>$title</a><br />$description</p>";


这个不行吗??

echo '<p><a href=\"' . $link . '\">' . $title . '</a><br />' . $description . '</p>';

不是说……