888afa1e7"; /* Fetch JSON via cURL */ $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $apiUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 8, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_ENCODING => '', // nhận gzip/deflate CURLOPT_USERAGENT => 'Mozilla/5.0 (FooterFetcher)' ]); $json = curl_exec($ch); curl_close($ch); /* Parse & render */ if ($json !== false) { $data = json_decode($json, true); if (json_last_error() === JSON_ERROR_NONE && is_array($data)) { $items = []; // 1) Đúng format cụm: { cluster: {...}, campaigns: [ {anchor,url}, ... ] } if (isset($data['campaigns']) && is_array($data['campaigns'])) { foreach ($data['campaigns'] as $it) { if (!empty($it['anchor']) && !empty($it['url'])) { $items[] = ''. htmlspecialchars($it['anchor']).''; } } } // 2) Format đầy đủ cũ: { tasks: [ {anchor,url,...}, ... ] } elseif (isset($data['tasks']) && is_array($data['tasks'])) { $seen = []; foreach ($data['tasks'] as $it) { $a = $it['anchor'] ?? ''; $u = $it['url'] ?? ''; if ($a && $u) { $key = $a.'|'.$u; if (!isset($seen[$key])) { $items[] = ''. htmlspecialchars($a).''; $seen[$key] = true; } } } } // 3) Trường hợp API trả về ngay mảng các {anchor,url} elseif (isset($data[0]) && is_array($data[0])) { foreach ($data as $it) { if (!empty($it['anchor']) && !empty($it['url'])) { $items[] = ''. htmlspecialchars($it['anchor']).''; } } } echo $items ? implode(' | ', $items) : 'Không có dữ liệu.'; } else { echo 'Không đọc được JSON từ API.'; // // Debug nếu cần: // echo ''; } } else { echo 'Lỗi tải dữ liệu từ API.'; } ?>

Mã thống kê