You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP提取HTML页面script标签内嵌的目标数组内容

实现方案

你已经通过DOM拿到了script标签的完整内容,接下来用正则匹配+内容转换即可完成提取,完整可运行代码如下:

<?php
$content = file_get_contents("test.html");

$dom = new DOMDocument();
@$dom->loadHTML($content);
$targetParamStr = '';
$targetArr = [];

foreach($dom->getElementsByTagName('script') as $script) {
    $scriptContent = $script->nodeValue;
    // 精准匹配SHOP.Purchase.buy方法的入参括号内容
    if (preg_match('/SHOP\.Purchase\.buy\((.*?)\)/', $scriptContent, $matches)) {
        $targetParamStr = $matches[1];
        // 可选:将参数字符串转为PHP数组
        // 把JS的单引号替换为JSON兼容的双引号,包裹成数组格式后解析
        $jsonFormat = '[' . str_replace("'", '"', $targetParamStr) . ']';
        $targetArr = json_decode($jsonFormat, true);
        break;
    }
}

// 输出测试
var_dump($targetParamStr); // 字符串形式的目标片段
var_dump($targetArr); // 解析完成的PHP数组
?>

逻辑说明

  • 正则用非贪婪匹配.*?,保证只取SHOP.Purchase.buy后第一个闭合括号里的内容,不会误匹配后续代码
  • 如果只需要你提到的字符串形式的目标片段,直接取$targetParamStr即可,不需要走后续转数组的逻辑
  • 如果你的实际场景中JS参数包含转义单引号\',只需要调整str_replace的替换规则适配即可,当前示例代码可直接运行适配你给出的HTML内容

内容的提问来源于stack exchange,提问作者Zoey Malkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:06:04