我得到以下PHP致命错误
致命错误:堆栈跟踪中带有消息“String”的未命名异常“exception”不能解析为XML。
错误日志指向行。
$xml = new SimpleXMLElement($data);(除了下面的代码外,这是代码后面的下一行)作为罪魁祸首。
但是,当我单独运行每个提要时,没有错误,提要保存到数据库中。
这是生成错误的代码:
$feeds = array(
'http://www.mtv.com/rss/news/news_full.jhtml',
'http://www.musicweek.com/rss.asp?navcode=232',
'http://www.cmt.com/rss/news/latestcached.jhtml',
'http://www.billboard.com/rss/news',
);
foreach ($feeds as $feed)
{
$ch = curl_init();
// causes error:
curl_setopt($ch, CURLOPT_URL, $feed);
// works:
curl_setopt($ch, CURLOPT_URL, 'http://www.billboard.com/rss/news');
curl_setopt($ch, CURLOPT_HEADER, 0 );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch); // put data from rss url into variable
curl_close($ch);
...如果我切换注释行并使用$feed变量,错误和白页。在今天下午之前,它运行得很好,所以我怀疑在其中一个提要中有一些XML是非法的,从而触发了这一点。
是否有更好的方法来编写这个--或者--如果有必要的话,用某种方法来捕获异常?
发布于 2011-12-02 00:45:38
罪魁祸首是http://www.mtv.com/rss/news/news_full.jhtml。如果您加载页面,您将得到一个可爱的错误。这是Chrome的
此页面包含以下错误:
第38栏第296行上的错误:开始和结束标签不匹配:下面第0行和第i行是页面的呈现,直到第一个错误。
有问题的线路目前内容如下:
<shorthead>Big K.R.I.T. Promises </i>Live From The Underground<i> In Early 2012</shorthead>毫不奇怪,它完全失败了。
至于捕获错误,请将代码包装在
try {
//... your code ...
} catch(Exception $exception){
//. . . Do somethign with exception ...
}https://stackoverflow.com/questions/8350263
复制相似问题