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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:31:07