RSS源-加载XML Start标记失败,应为'<';找不到


RSS Feed - Failed loading XML Start tag expected, '<' not found

我正试图从苏富比的网站上获得RSS提要,该网站使用标准的PHP阅读器函数,该函数使用simplexml_load_file和循环,但无法正常工作。当我插入此代码时,我会得到一个"加载XML Start失败,应为"<"找不到"error"

<?php
$url = 'http://apps.shareholder.com/rss/rss.aspx?channels=2908&companyid=BID&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31';
libxml_use_internal_errors(true);
$sxe = simplexml_load_string($url);
if ($sxe === false) {
echo "Failed loading XML'n";
foreach(libxml_get_errors() as $error) {
echo "'t", $error->message;
}
}
print_r($rss);
?>

我试过使用这个帖子中的curl,但它只是打印了一个空的预标签。

这是我使用的阅读器PHP代码。。。

<?php
$url = "http://apps.shareholder.com/rss/rss.aspx?channels=2908&companyid=BID&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31";
$rss = simplexml_load_file($url);
if($rss)
{
$items = $rss->channel->item;
foreach($items as $item)
{
if($i==5) break;    
$title = $item->title;
$link = $item->link;
$published_on = $item->pubDate;
$description = $item->description;?>
<hr>                            
<div class="news-story">
<?php 
echo '<h3><a href="'.$link.'">'.$title.'</a></h3>';
echo '<span class="news-date">('.$published_on.')</span>';
?>
</div>
<?php
$i++;      
}
}
?>

这是我试图从苏富比的新闻RSS源中获取的。

任何帮助或建议都将非常有帮助。谢谢

编辑

感谢第四只鸟提到这个Stack问题,它昨晚起作用了,但当我今天检查时,它停止了作用。。。

<?php
$context  = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'http://apps.shareholder.com/rss/rss.aspx?channels=2908&companyid=BID&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31';
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
print_r($xml);
?>

以下是我在MAMP php_error.log中遇到的一些错误:

[18-Dec-2015 07:46:41 America/New_York]PHP警告:simplexml_load_string():<html>在(*我的站点根文件夹)中

[18-2015 07:46:41 America/New_York]PHP警告:simplexml_load_string():^在(*my站点根文件夹)中

[18-Dec-2015 07:46:41 America/New_York]PHP警告:simplexml_load_string():实体:第85行:分析器错误:(*my site根文件夹)中标记html第2行中的数据过早结束

它们基本上是重复的。

在您提供的第一个代码块中,您使用的是simplexml_load_string。

手册将第一个参数描述为:

格式良好的XML字符串

在您的代码中,您正在传递一个url。如果您想使用simplexml_load_string,此问题的答案可能会帮助您:使用SimpleXML加载远程URL

在您提供的第二个代码块中,使用simplexml_load_file

手册将第一个参数描述为:

XML文件的路径

如果我尝试第二个代码块中的代码,它会向我显示RSS提要中的数据,它只会给我以下PHP注意:

PHP注意:未定义的变量:i

实际上是URL的最后一部分导致它在解析XML数据时中断。当我删除'&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31'我使用simplexml_load_file()发布的初始代码块运行良好,此后一直没有中断。谢谢你的帮助第四只鸟!