使用 PHP 正则表达式提取 JavaScript 变量内容

本文将介绍如何使用 PHP 正则表达式从 JavaScript 代码中提取变量 player_aaaaflagurl_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 代码中提取变量的值。该方法可以应用于各种场景,例如解析网页内容、自动化测试等。

更多示例和技巧,请参考相关文档和教程。

PHP 正则表达式提取 JavaScript 变量内容 - 使用 preg_match 获取 player_aaaa 中的 flag 和 url_next

原文地址: https://www.cveoy.top/t/topic/ojgb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录