我正在尝试读取<audio>PHP 中的 html标记,但它是动态创建的这是网址!我用来阅读$dom = new DOMDocument();@$dom->loadHTML($html);foreach (iterator_to_array($dom->getElementsByTagName('audio')) as $node) { $this->printnode($node);}在printnode()函数中,它显示为没有<audio>标签退出,因为它是动态创建的
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
看到结构后,是的,实际音频的 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;
如果您选择这样做。
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消