PHP 正则表达式提取 JavaScript 变量内容 - 使用 preg_match 获取 player_aaaa 中的 flag 和 url_next
使用 PHP 正则表达式提取 JavaScript 变量内容
本文将介绍如何使用 PHP 正则表达式从 JavaScript 代码中提取变量 player_aaaa 的 flag 和 url_next 值。
示例代码
假设我们有一个包含 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}
正则表达式
可以使用以下正则表达式来提取所需的信息:
$pattern = '/var\s+player_aaaa={.+?'flag':'(\w+)'.+?'url_next':'([^']+?)'/s';
解释
\s:匹配任意空白字符(包括空格、制表符、换行符等)+:匹配前面的元素一次或多次\w:匹配任意单词字符(包括字母、数字、下划线).:匹配任意字符(除了换行符)?:匹配前面的元素零次或一次():用于捕获子表达式的内容,以便后续可以引用
PHP 代码
$string = '<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>';
$pattern = '/var\s+player_aaaa={.+?'flag':'(\w+)'.+?'url_next':'([^']+?)'/s';
preg_match($pattern, $string, $matches);
print_r($matches);
输出结果
Array
(
[0] => 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}
[1] => play
[2] =>
)
可以看到,$matches[1] 的值为 'play',$matches[2] 的值为空字符串。
注意
- 在匹配
url_next的值时,需要使用[^']+?来匹配不包含双引号的任意字符。 - 该方法适用于提取单个
player_aaaa变量的值,如果需要提取多个变量,则需要修改正则表达式。
总结
通过使用 PHP 正则表达式,我们可以轻松地从 JavaScript 代码中提取变量的值。该方法可以应用于各种场景,例如解析网页内容、自动化测试等。
更多示例和技巧,请参考相关文档和教程。
原文地址: https://www.cveoy.top/t/topic/ojgb 著作权归作者所有。请勿转载和采集!