如何在php中获得动态创建的html <audio>标签

时间:2019-08-05 06:46:08

标签: php dom html5-audio

我正在尝试读取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>标签,因为它是动态创建的

1 个答案:

答案 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;

如果您愿意的话。