Laravel中如何在Guzzle请求返回的字符串中查找指定值
解决Guzzle请求结果字符串的指定值查找问题
你用Guzzle获取到的是纯字符串,Laravel的whereLike是数据库ORM的查询方法,自然无法直接用在字符串上,用PHP原生的字符串处理或正则表达式就能解决:
方法一:基础存在性判断(strpos)
如果只是要判断目标id是否存在于字符串中,用strpos效率最高:
$targetId = '1234567'; // 检查字符串中是否包含目标id if (strpos($items, $targetId) !== false) { // 已找到目标id }
注意必须用!== false做判断,因为如果目标id出现在字符串开头,strpos会返回0,用!= false会误判为未找到。
方法二:精准匹配格式(正则表达式)
如果要精准匹配$id = 1234567或$id = xqc这种固定格式的内容,避免误匹配其他位置的相同字符,用正则表达式更可靠:
// 匹配数字类型的id(如$id = 1234567) preg_match('/\$id = (\d+)/', $items, $matches); if (!empty($matches[1])) { $foundId = $matches[1]; // 捕获到的数字id } // 匹配字母数字组合的id(如$id = xqc) preg_match('/\$id = (\w+)/', $items, $matches); if (!empty($matches[1])) { $foundId = $matches[1]; // 捕获到的字母数字id }
正则说明:\$id = 转义匹配$id =($是正则特殊字符);(\d+)匹配1个及以上数字,(\w+)匹配字母、数字、下划线;$matches[1]是正则捕获到的目标id值。
方法三:若结果为JSON格式,先解码再查找
如果接口返回的是JSON字符串,优先转成数组/对象后查找,逻辑更清晰:
// 解码为关联数组 $itemsArray = json_decode($items, true); // 直接查找(根据实际JSON结构调整键名) if (isset($itemsArray['id']) && $itemsArray['id'] === '1234567') { // 已找到目标id } // 递归查找嵌套数组中的id function findTargetId($array, $target) { foreach ($array as $key => $value) { if ($key === 'id' && $value === $target) { return true; } if (is_array($value) && findTargetId($value, $target)) { return true; } } return false; } if (findTargetId($itemsArray, 'xqc')) { // 已找到目标id }
内容的提问来源于stack exchange,提问作者CARSAR
相关产品推荐
相关产品推荐

