PHP 正则表达式匹配错误:变量名称不一致
这段代码中,正则表达式匹配的内容不对的原因是匹配的正则表达式中的变量名称与实际内容中的变量名称不一致。应该将正则表达式中的变量名称改为与实际内容中的变量名称一致,如下所示:
preg_match('/var player_(.*?)=(.*?);/', $html, $match);
这样就能正确匹配并输出键值内容了。
例如,以下代码可以从 HTML 代码中提取数据:
$html = '<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":"\u9053\u58eb\u964d\u9b542\u4e4b\u50f5\u5c38\u6751","vod_actor":"\u6768\u6613\u4e4b,\u9648\u8bd7\u5609,\u8fb0\u8f69\u9510","vod_director":"\u6768\u6613\u4e4b","vod_class":"\u6050\u6016,\u5267\u60c5"},"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('/var player_(.*?)=(.*?);/', $html, $match);
if(isset($match[1])) {
$player_data = json_decode($match[1], true);
// 输出所有键值内容
print_r($player_data);
}
输出结果:
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
)
需要注意的是,代码中的变量名称 player_aaaa 可能与实际代码中不一致,请根据实际情况修改代码中的变量名称。
希望这篇文章对您有所帮助。如果您还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/ojhl 著作权归作者所有。请勿转载和采集!