我正在尝试读取PHP中的html <audio>
标记,但是它是动态创建的
这是the URL!我正在阅读
$dom = new DOMDocument();
@$dom->loadHTML($html);
foreach (iterator_to_array($dom->getElementsByTagName('audio')) as $node) {
$this->printnode($node);
}
在printnode()
函数中,它没有显示<audio>
标签,因为它是动态创建的
答案 0 :(得分:1)
看到结构后,是的,实际音频的url是通过JS动态加载的。
但是音频播放列表数据仍然可见。使用它:
$xpath = new DOMXPath($dom);
$playlist_data = $xpath->evaluate('string(//script[@id="playlist-data"])');
$data = json_decode($playlist_data, 1);
echo $data['audio'];
位于另一个JSON字符串格式的脚本标签中。因此,基本上,访问此数据并以字符串形式获取值。然后,您将获得JSON字符串,并像往常一样将其加载到json_decode
中,解析器将完成返回数组的操作,然后像访问任何普通数组一样访问音频URL
旁注:我只是使用xpath
作为个人喜好,您可以使用:
$playlist_data = $dom->getElementById('playlist-data')->nodeValue;
如果您愿意的话。