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

如何在PHP中使用preg_match提取响应中Delta数组内容得到r3r4

问题原因

你写的正则/^{Delta=(\[.*\, .*\])}$/使用了^和$限定符,要求整个字符串完全匹配{Delta=[xxx]}格式,但你的实际$response[0]在Delta字段后还有X=alarmOff, Y=heatOn等其他内容,因此完全匹配失败。就算匹配到整个数组内容,也需要二次提取才能拿到内部的r3、r4值,逻辑冗余。

正确实现方案

方案1:单次匹配直接捕获两个值(元素数量固定时推荐)

直接通过捕获组提取两个目标值,一步得到结果:

// 匹配Delta数组内的两个元素
preg_match('/Delta=\[([a-zA-Z0-9]+),\s*([a-zA-Z0-9]+)\]/', $response[0], $matches);
// 拼接结果
$result = $matches[1] . $matches[2];

最终$result的值就是你需要的r3r4。

方案2:兼容多元素的通用方案

如果Delta数组内的元素数量不固定,可以先提取整个数组内容再拆分处理:

// 提取[]内的所有内容
preg_match('/Delta=\[(.*?)\]/', $response[0], $matches);
// 按逗号拆分后去除每个元素的首尾空格,再拼接
$deltaItems = explode(',', $matches[1]);
$result = implode('', array_map('trim', $deltaItems));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:15:02