如何从PHP cURL返回的混合内容中提取AJAX内的三个JS参数值
实现方案
通过正则表达式限定匹配范围后提取目标参数,稳定性高,代码如下:
// 先定位到$.ajax配置内的data字段块,s修饰符支持匹配多行内容 if (preg_match('/\$\.ajax\(\{.*?data:\s*\{(.*?)\},/s', $result, $data_block)) { $data_content = $data_block[1]; // 分别提取三个参数值 preg_match('/tracking:\s*"([^"]+)"/', $data_content, $track_res); preg_match('/timestamp:\s*(\d+)/', $data_content, $time_res); preg_match('/hash:\s*"([^"]+)"/', $data_content, $hash_res); // 赋值到指定PHP变量,增加容错处理避免匹配失败报错 $data_tracking = $track_res[1] ?? ''; $data_timestamp = isset($time_res[1]) ? intval($time_res[1]) : 0; $data_hash = $hash_res[1] ?? ''; }
逻辑说明
- 先匹配提取
$.ajax配置内的data字段的所有内容,避免页面其他位置出现同名字段导致匹配错误 - 三个正则分别对应三个参数的格式特征:
tracking和hash为双引号包裹的字符串,timestamp为纯数字,正则自动忽略冒号后的空格,适配不同的JS代码缩进格式 - 内置容错处理,匹配失败时变量默认赋值为空/0,不会抛出PHP警告
内容的提问来源于stack exchange,提问作者i need help
相关产品推荐
相关产品推荐

