PHP解析Kodi/XBMC影视NFO文件:Ratings数据提取问题求助
解析Kodi NFO文件Ratings节点的PHP实现
在开发解析Kodi电影/剧集NFO文件的PHP脚本时,使用SimpleXML读取文件并转换为关联数组的方式,常会遇到ratings节点下评分项无法正确提取的问题——循环报错或返回空结果。核心需求是提取每个评分的名称、评分值及投票数,以下是可行的解决代码:
典型Kodi NFO的Ratings结构
<ratings> <rating name="imdb" max="10" default="true"> <value>8.7</value> <votes>123456</votes> </rating> <rating name="tmdb" max="10"> <value>8.5</value> <votes>78901</votes> </rating> </ratings>
正确的解析代码
// 加载NFO文件 $xml = simplexml_load_file('your_movie.nfo'); $extractedRatings = []; // 遍历每个rating节点 foreach ($xml->ratings->rating as $rating) { // 强制类型转换避免SimpleXMLElement对象干扰 $extractedRatings[] = [ 'name' => (string)$rating['name'], 'value' => (float)$rating->value, 'votes' => (int)$rating->votes ]; } // 查看结果 print_r($extractedRatings);
关键注意事项
- 避免直接用
json_decode(json_encode($xml), true)转关联数组:当ratings下只有单个rating节点时,转换后会变成对象而非数组,导致循环报错;直接操作SimpleXMLElement节点集合更稳定。 - 必须对SimpleXMLElement的属性和子节点做强制类型转换:默认返回的是SimpleXMLElement对象,直接使用会导致后续处理异常。
内容的提问来源于stack exchange,提问作者crosenblum
相关产品推荐
相关产品推荐

