我正在寻找一种从XML访问中查找参数"duration"值的方法
源:http://gdata.youtube.com/feeds/api/videos/bSCs7NzghSg
我尝试了类似的东西:
preg_match('#<yt:duration seconds=''(.*?)''/>#is',$xml,$resultduration);
$duration = $resultTitre[count($resultduration)-1];
但值返回 0
这可以通过 SimpleXML 来完成。使用 children()
方法查找子项,attributes()
方法访问属性。
下面是一个用于此目的的函数:
function getDuration($url) {
$xml = simplexml_load_file($url);
$duration = $xml->children('media', true)
->group->children('yt', true)
->duration->attributes('', true)->seconds;
return $duration;
}
用法:
$url = 'http://gdata.youtube.com/feeds/api/videos/bSCs7NzghSg';
echo getDuration($url); // => 2461
演示!
$file = 'http://gdata.youtube.com/feeds/api/videos/bSCs7NzghSg';
$xml = simplexml_load_file($file);
$result = $xml->xpath('//yt:duration');
foreach ($result as $node) {
echo (double) $node['seconds'];
echo ' ';
}