如何在 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;
如果您选择这样做。
我正在尝试读取 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;
如果您选择这样做。