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
相关产品推荐
相关产品推荐

