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

PHP如何提取并展示Go High Level Webhook返回的数据?

如何用PHP提取Go High Level Webhook数据中的值

收到的Webhook数据

从Go High Level获取到的原始数据如下:

2022-11-27 07:48:30 {
    "contact_id":"hfjdkleidhfjruth",
    "first_name":"My First Name",
    "last_name":"My Last Name",
    "full_name":"My Name",
    "email":"email@email.com",
    "phone":"+12345678"
}

你的问题所在

你尝试用以下代码提取值,但无法成功:

$WebHook = '2022-11-27 07:48:30{"contact_id":"hfjdkleidhfjruth","first_name":"My First Name","last_name":"My Last Name","full_name":"My Name","email":"email@email.com","phone":"+12345678"}';

echo $WebHook['2022-11-27 07:48:30']['first_name'];

问题出在两点:一是这段数据不是标准JSON,前面带了时间前缀;二是你把字符串直接当作多维数组访问,PHP里字符串的数组语法只能取单个字符,不能这样嵌套访问。

正确的解决方法

步骤1:提取纯JSON部分

原始数据的前19位是固定格式的时间(YYYY-MM-DD HH:MM:SS),可以直接截取后面的JSON内容;也可以用正则匹配更灵活:

$WebHook = '2022-11-27 07:48:30{"contact_id":"hfjdkleidhfjruth","first_name":"My First Name","last_name":"My Last Name","full_name":"My Name","email":"email@email.com","phone":"+12345678"}';

// 方法1:按固定长度截取(时间部分共19个字符)
$jsonPart = substr($WebHook, 19);

// 方法2:正则匹配JSON块(适配时间格式可能变化的情况)
preg_match('/\{.*\}/s', $WebHook, $matches);
$jsonPart = $matches[0];

步骤2:解码JSON为PHP数组

用json_decode把JSON字符串转成PHP关联数组(第二个参数传true),之后就能正常提取字段值:

// 解码为关联数组
$contactData = json_decode($jsonPart, true);

// 检查解码是否成功(避免JSON格式错误导致的问题)
if ($contactData === null) {
    echo 'JSON解析失败,请检查数据格式';
} else {
    // 提取并展示各个字段
    echo "联系人ID:{$contactData['contact_id']}<br>";
    echo "名字:{$contactData['first_name']}<br>";
    echo "姓氏:{$contactData['last_name']}<br>";
    echo "全名:{$contactData['full_name']}<br>";
    echo "邮箱:{$contactData['email']}<br>";
    echo "电话:{$contactData['phone']}<br>";
}

完整可运行代码

$WebHook = '2022-11-27 07:48:30{"contact_id":"hfjdkleidhfjruth","first_name":"My First Name","last_name":"My Last Name","full_name":"My Name","email":"email@email.com","phone":"+12345678"}';

// 提取JSON部分
$jsonPart = substr($WebHook, 19);
// 解码为关联数组
$contactData = json_decode($jsonPart, true);

// 处理解码结果
if ($contactData === null) {
    echo 'JSON解析失败';
} else {
    echo "联系人ID:{$contactData['contact_id']}<br>";
    echo "名字:{$contactData['first_name']}<br>";
    echo "姓氏:{$contactData['last_name']}<br>";
    echo "全名:{$contactData['full_name']}<br>";
    echo "邮箱:{$contactData['email']}<br>";
    echo "电话:{$contactData['phone']}<br>";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:10:19