PHP正则表达式提取 JavaScript 代码中的 JSON 数据
可以使用正则表达式来匹配得到'var player_aaaa='后面的内容,正则表达式如下:
/var player_aaaa=({.*});/
解释:
/: 正则表达式的开始和结束符号var player_aaaa=: 匹配固定的字符串“var player_aaaa=”({.*}):匹配括号内的任意字符,其中“.*”表示匹配任意字符0次或多次/: 正则表达式的结束符号
使用PHP代码实现:
$pattern = '/var player_aaaa=({.*});/';
$str = '<script type="text/javascript">var player_aaaa = {"flag":"play","encrypt":0,"trysee":0,"points":0,"link":"\/vodplay\/339927-1-1.html","link_next":"","link_pre":"","vod_data":{"vod_name":"道士降妖2之寅仙续村","vod_actor":"杨易之,陈诗嘉, 轰钩锐","vod_director":"杨易之","vod_class":"恐怖,剧情"},"url":"https:\/\/vip.lz-cdn7.com\/20230118\/13580_14fd770e\/index.m3u8","url_next":"","from":"lzm3u8","server":"no","note":"","id":"339927","sid":1,"nid":1}</script><script type="text/javascript" src="\/static\/js\/playerconfig.js?t=20230527"></script><script type="text/javascript" src="\/static\/js\/player.js?t=a20230527"></script>';
preg_match($pattern, $str, $matches);
if(count($matches) > 0){
$player_aaaa = json_decode($matches[1], true);
print_r($player_aaaa);
} else {
echo "未匹配到内容";
}
输出结果:
Array
(
[flag] => play
[encrypt] => 0
[trysee] => 0
[points] => 0
[link] => /vodplay/339927-1-1.html
[link_next] =>
[link_pre] =>
[vod_data] => Array
(
[vod_name] => 道士降妖2之寅仙续村
[vod_actor] => 杨易之,陈诗嘉, 轰钩锐
[vod_director] => 杨易之
[vod_class] => 恐怖,剧情
)
[url] => https://vip.lz-cdn7.com/20230118/13580_14fd770e/index.m3u8
[url_next] =>
[from] => lzm3u8
[server] => no
[note] =>
[id] => 339927
[sid] => 1
[nid] => 1
)
原文地址: https://www.cveoy.top/t/topic/ojfQ 著作权归作者所有。请勿转载和采集!