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

How to get dynamically created html <audio> tag in php

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

看到结构后,是的 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;

如果您选择这样做。