【问题标题】:parsing rss feed gives 500 internal server error解析 rss 提要给出 500 内部服务器错误
【发布时间】:2012-07-12 08:10:11
【问题描述】:

当我尝试解析 google rss 提要时,我收到 Network error: 500 internal server error in chrome 和 firefox 开发者工具。下载 rss 提要(使用 curl)的第一部分工作正常。

我在以下位置找到了这个示例:http://www.joevasquez.info/development/parsing-xml-feeds-with-php-rss-and-atom/#more-63

有人可以指出我做错了什么吗?谢谢。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
if (function_exists("curl_init")){
    $ch=curl_init();
    //curl_setopt($ch,CURLOPT_URL,'http://www.joevasquez.info/feed/');
    curl_setopt($ch,CURLOPT_URL, 'http://news.google.com/news?hl=en&topic=t&output=rss');
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    //curl_setopt($ch,CURLOPT_HEADER,0);

    $data=curl_exec($ch);


    curl_close($ch);
    //print($data);

    $doc=new SimpleXmlElement($data,LIBXML_NOCDATA);

    if (isset($doc->channel)) parseRSS($doc);

    function parseRSS($xml){
        $cnt=count($xml->channel->item);
        for ($i=0;$i<$cnt;$i++){
            $url=$xml->channel->item[$i]->link;
            $title=$xml->channel->item[$i]->title;
            $desc=$xml->channel->item[$i]->description;

        echo '<a href="'.$url.'">'.$title.'</a>'.$desc.'<br>';
    }
}
?>
</body>
</html>

【问题讨论】:

  • 每次 PHP 生成 500 错误时,都会在错误日志中附上一个有用的条目。鉴于脚本的开头是直接输出而不是&lt;?php 标签,很可能是解析错误。查看您的网络服务器错误日志并报告您发现的任何消息。
  • 我尝试在
  • 我现在正在检查错误日志

标签: php parsing rss feed


【解决方案1】:

你忘了在 for 循环后关闭括号。

for ($i=0;$i<$cnt;$i++){
     $url=$xml->channel->item[$i]->link;
     $title=$xml->channel->item[$i]->title;
     $desc=$xml->channel->item[$i]->description;
}

【讨论】:

  • 我仍然遇到同样的错误。我关闭了 for 循环,并在 之前删除了所有 dtd
【解决方案2】:

好的,我开始工作了。日志中的错误:

Fatal error:  Call to undefined function  parserss()in /home1/aquinto1/public_html/belibook.com/curl/curl3.php on line 17

我在函数 parserRSS 被调用之前剪切并粘贴了它,现在它可以正常工作了。

以下是我的修改:

$doc=new SimpleXmlElement($data,LIBXML_NOCDATA);

function parseRSS($xml){
    $cnt=count($xml->channel->item);
    for ($i=0;$i<$cnt;$i++){
        $url=$xml->channel->item[$i]->link;
        $title=$xml->channel->item[$i]->title;
        $desc=$xml->channel->item[$i]->description;
        echo '<a href="'.$url.'">'.$title.'</a>'.$desc.'<br>';
    }
}

if (isset($doc->channel)) parseRSS($doc);

谢谢你们!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多