PHP调用CoinMarketCap API如何通过symbol或slug筛选指定加密货币数据
按symbol筛选的实现方法
方案1:在API请求阶段直接筛选(优先推荐)
CoinMarketCap的/v1/cryptocurrency/listings/latest接口原生支持symbol查询参数,你直接把CMS中存储的$variable作为参数传入请求URL即可,无需拉取全量列表再过滤,接口会直接返回对应币种的数据,性能损耗最低。
修改后完整代码如下:
// 你CMS中存储的目标币种变量,示例值如'BTC'、'ETH' $target_symbol = $variable; $url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest"; // 拼接筛选参数,用urlencode处理避免特殊字符异常 $request = $url . "?symbol=" . urlencode($target_symbol); $headers = [ 'Accepts: application/json', 'X-CMC_PRO_API_KEY: ___YOUR_API_KEY_HERE___' ]; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $request, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => 1 )); $response = curl_exec($curl); $json = json_decode($response); curl_close($curl); // 筛选后返回的data数组仅包含目标币种,直接取第一个元素即可 if (!empty($json->data)) { $price = $json->data[0]->quote->USD->price; echo $price; } else { echo "未查询到对应币种数据"; }
如果需要同时筛选多个币种,直接把多个symbol用英文逗号拼接即可,例如symbol=BTC,ETH,SOL。
方案2:拉取全量列表后本地筛选(适合多币种批量查询场景)
如果你需要一次性拉取全量币种列表再多次匹配不同symbol,可以直接遍历返回的data数组做匹配:
// 原有API请求逻辑不变,拿到$json后执行以下逻辑 $target_symbol = $variable; $price = null; foreach ($json->data as $item) { if ($item->symbol == $target_symbol) { $price = $item->quote->USD->price; break; } } if ($price) { echo $price; } else { echo "未查询到对应币种数据"; }
注意事项
- 传入的symbol建议用大写格式,和CoinMarketCap的标准币种符号保持一致避免匹配失败
- 如果你需要按slug筛选,把请求参数的
symbol换成slug传入对应值即可,逻辑完全一致
内容的提问来源于stack exchange,提问作者user17303170
相关产品推荐
相关产品推荐

