我有一个RSS提要URL,我正在使用以下PHP函数从中提取值。
$xml = simplexml_load_file($url);
当$url
产生一些结果时,它的工作完美。我正在使用count()
函数来计算从RSS提要中提取的数组的长度。
$length=sizeof($xml->rs[0]->r);
但是当RSS中没有结果时,它会给我错误
Trying to get property of non-object in /home/****/public_html/index.php on line 5
如果RSS提要URL中没有结果,有没有办法回显消息。
当我做print_r($xml)
ob没有结果$xml
时,我得到了
SimpleXMLElement Object ( [@attributes] => Array ( [type] => noresults [code] => 1.1 ) [title] => SimpleXMLElement Object ( ) [subtitle] => SimpleXMLElement Object ( ) [text] => SimpleXMLElement Object ( ) [base] => SimpleXMLElement Object ( ) ) )
我到处搜索,找不到解决方案..感谢您的帮助。
答案 0 :(得分:1)
你可以这样做:
if(is_a($xml,"SimpleXMLElement"))
{
//process XML here
}
else
{
die("Unable to load XML from URL");
}
is_a
函数有两个参数 - 第一个是对象变量,第二个是我们检查它是否属于的类。
根据您的问题的更新,看起来您正在获取服务返回的XML对象,而不管是否有结果。在这种情况下,您需要检查返回的XML,以检查它是否有价值或者说没有结果。
注意返回值( [@attributes] => Array ( [type] => noresults [code] => 1.1 )
您可以使用SimpleXMLElement::attributes
函数循环和示例属性。在PHP Manual for SimpleXMLElement
答案 1 :(得分:0)
$xml = simplexml_load_file($url);
if ($xml && property_exists($xml, 'rs') && is_array($xml->rs) && isset($xml->rs[0]) && is_object($xml->rs[0]) && property_exists($xml->rs[0], 'r')) {
// do something with $xml->rs[0]->r
} else {
echo "Not available to access $xml->rs[0]->r";
}